📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

此 API 用于显示集群中所有节点的详细信息和统计指标。

API #

GET /_cat/nodes

API 的作用 #

返回集群中所有节点的全面信息,包括:

  • 基本信息:节点 ID、名称、IP 地址、端口等
  • 版本信息:Easysearch 版本、构建信息、JDK 版本
  • 资源使用:磁盘、内存、CPU 使用情况
  • 统计信息:索引、搜索、合并等操作的统计数据
  • 角色信息:主节点标记、节点角色(数据/摄取/协调)

API 的参数 #

此 API 没有路由参数。

查询字符串参数 #

参数类型是否必需默认值描述
bytesstring可选b字节大小单位
可选值:b, k, kb, m, mb, g, gb, t, tb, p, pb
formatstring可选text响应格式
可选值:json, yaml, text
full_idboolean可选false是否显示完整的节点 ID
hstring可选默认列指定显示的列,逗号分隔
helpboolean可选false显示帮助信息
localboolean可选false是否从本地节点获取信息
master_timeouttime可选30s等待主节点响应的超时时间
sstring可选-排序列,支持 :asc:desc
sizestring可选-数量大小单位
可选值:k, m, g, t, p
timestring可选ms时间单位
可选值:nanos, micros, ms, s, m, h, d
tsboolean可选true是否显示时间戳
vboolean可选false详细模式,显示列头

返回的字段信息 #

基本信息字段 #

列名描述
id节点唯一标识符(默认显示前 4 个字符)
pid进程 ID
ipIP 地址
port传输端口
http_addressHTTP 地址
name节点名称

版本信息字段 #

列名描述
versionEasysearch 版本
flavor发行版本类型
type发行类型
build构建哈希值
jdkJDK 版本

磁盘信息字段 #

列名描述
disk.total总磁盘空间
disk.used已用磁盘空间
disk.avail可用磁盘空间
disk.used_percent磁盘使用百分比

内存信息字段 #

列名描述
heap.current当前堆内存使用量
heap.percent堆内存使用百分比
heap.max最大堆内存配置
ram.current当前物理内存使用量
ram.percent物理内存使用百分比
ram.max总物理内存

文件描述符字段 #

列名描述
file_desc.current当前使用的文件描述符数量
file_desc.percent文件描述符使用百分比
file_desc.max最大文件描述符数量

系统负载字段 #

列名描述
cpu最近 CPU 使用率
load_1m1 分钟负载平均值
load_5m5 分钟负载平均值
load_15m15 分钟负载平均值
uptime节点运行时间

节点角色字段 #

列名描述
node.role节点角色
m: 主节点候选
d: 数据节点
i: 摄取节点
-: 仅协调节点
master主节点标记(* 表示当前主节点)

缓存统计字段 #

列名描述
completion.size完成功能缓存大小
fielddata.memory_size字段数据缓存大小
fielddata.evictions字段数据缓存驱逐次数
query_cache.memory_size查询缓存大小
query_cache.evictions查询缓存驱逐次数
query_cache.hit_count查询缓存命中次数
query_cache.miss_count查询缓存未命中次数
request_cache.memory_size请求缓存大小
request_cache.evictions请求缓存驱逐次数
request_cache.hit_count请求缓存命中次数
request_cache.miss_count请求缓存未命中次数

索引操作统计字段 #

列名描述
indexing.index_current当前索引操作数
indexing.index_time索引操作耗时
indexing.index_total索引操作总数
indexing.index_failed失败的索引操作数
indexing.delete_current当前删除操作数
indexing.delete_time删除操作耗时
indexing.delete_total删除操作总数

搜索操作统计字段 #

列名描述
search.query_current当前查询阶段操作数
search.query_time查询阶段耗时
search.query_total查询操作总数
search.fetch_current当前获取阶段操作数
search.fetch_time获取阶段耗时
search.fetch_total获取操作总数
search.scroll_current开放的滚动上下文数
search.open_contexts开放的搜索上下文数

合并操作统计字段 #

列名描述
merges.current当前合并操作数
merges.total合并操作总数
merges.total_time合并操作总耗时

分段统计字段 #

列名描述
segments.count分段数量
segments.memory分段内存使用量
segments.index_writer_memory索引写入器内存使用量

请求示例 #

# 查询所有节点的默认信息
GET /_cat/nodes

# 显示列头
GET /_cat/nodes?v

# 使用 JSON 格式
GET /_cat/nodes?format=json

# 只显示特定列
GET /_cat/nodes?h=name,ip,heap.percent,cpu,load_1m

# 按 CPU 使用率降序排序
GET /_cat/nodes?s=cpu:desc

# 显示完整节点 ID
GET /_cat/nodes?full_id=true

# 设置字节单位为 GB
GET /_cat/nodes?bytes=gb

# 显示帮助信息
GET /_cat/nodes?help

响应示例 #

文本格式(默认) #

ip           heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10.0.1.10           45          78  15    2.10    2.05     1.98  mdi       *      master-node
10.0.1.11           52          68  22    3.20    2.80     2.50  di        -      data-node-1
10.0.1.12           48          72  18    2.80    2.60     2.40  di        -      data-node-2
10.0.1.13           35          55  10    1.50    1.40     1.30  -         -      coordinating-node

JSON 格式 #

[
  {
    "ip": "10.0.1.10",
    "heap.percent": "45",
    "ram.percent": "78",
    "cpu": "15",
    "load_1m": "2.10",
    "load_5m": "2.05",
    "load_15m": "1.98",
    "node.role": "mdi",
    "master": "*",
    "name": "master-node"
  }
]

使用场景 #

  1. 集群监控:实时监控各节点的资源使用情况
  2. 负载均衡检查:确认负载在节点间分布是否均匀
  3. 性能分析:分析索引、搜索等操作的性能指标
  4. 容量规划:评估资源使用,规划节点扩容
  5. 问题排查:诊断节点相关的性能和稳定性问题

节点角色说明 #

角色标识描述
主节点候选m可以被选举为主节点
数据节点d存储数据和执行数据相关操作
摄取节点i执行摄取管道预处理数据
协调节点-处理客户端请求,分发搜索和聚合

一个节点可以同时具有多个角色,如 mdi 表示同时具备主节点候选、数据节点和摄取节点功能。

注意事项 #

  1. 此 API 只支持 GET 方法
  2. 默认只显示节点 ID 的前 4 个字符,使用 full_id=true 显示完整 ID
  3. local=true 时可能返回过时信息,但响应更快
  4. 大量节点时响应时间可能较长
  5. 某些统计字段可能为空或显示 -

最佳实践 #

  1. 定期监控:定期检查各节点的资源使用情况
  2. 告警设置:对 CPU、内存、磁盘使用率设置告警阈值
  3. 均衡分布:确保数据和负载均匀分布在各节点
  4. 专用角色:大规模集群建议使用专用角色节点
  5. 文件描述符:监控文件描述符使用,避免耗尽

相关文档 #