_cluster/health 和 _cat/nodes 命令详解
1.集群健康状态(_cluster/health)
1.1 参数详解
GET _cluster/health

以下是 GET _cluster/health
返回参数的具体含义解析。
1.1.1 基础信息
参数
|
含义
|
补充说明
|
---|
cluster_name | 集群名称 | 示例中的集群名为 es-xxx |
status | 集群健康状态 | green :所有主分片和副本分片正常;yellow :主分片正常,副本分片未全部分配;red :有主分片未分配 |
timed_out | 请求是否超时 | false 表示本次查询未超时 |
1.1.2 节点与分片状态
参数
|
含义
|
补充说明
|
---|
number_of_nodes | 集群总节点数 | 当前为
3
3
3,包括所有角色节点(数据/主/协调节点) |
number_of_data_nodes | 数据节点数量 | 当前为
3
3
3,仅处理数据的节点 |
active_primary_shards | 活跃的主分片数 | 当前为
15
15
15,表示所有索引的主分片均已分配并可用 |
active_shards | 活跃的总分片数 | 当前为
31
31
31(含主分片+副本分片),说明副本分片数为 31-15=16 |
active_shards_percent_as_number | 活跃分片百分比 |
100
%
100\%
100% 表示所有分片(主+副本)均正常 |
1.1.3 分片分配状态
参数
|
含义
|
补充说明
|
---|
relocating_shards | 正在迁移的分片数 |
0
0
0 表示无分片在节点间迁移(通常因节点下线或平衡触发) |
initializing_shards | 初始化中的分片数 |
0
0
0 表示无新分片在创建或恢复(否则可能因重启或索引新建) |
unassigned_shards | 未分配的分片数 |
0
0
0 表示无分片因磁盘不足、分配规则等滞留未分配 |
delayed_unassigned_shards | 延迟未分配的分片数 |
0
0
0 表示无因 index.unassigned.node_left.delayed_timeout 设置而延迟分配的分片 |
1.1.4 集群任务与负载
参数
|
含义
|
补充说明
|
---|
number_of_pending_tasks | 待处理集群级任务数 |
0
0
0 表示主节点无积压任务(如分片分配、模板更新) |
number_of_in_flight_fetch | 正在进行的分片数据同步数 |
0
0
0 表示无节点间数据同步(主副分片同步) |
task_max_waiting_in_queue_millis | 任务队列最长等待时间(毫秒) |
0
0
0 表示无任务积压(若持续
>
0
> 0
>0 可能主节点过载) |
1.2 健康状态分析示例
- 绿色状态:所有分片(主+副本)均已分配,无迁移或初始化任务。
- 潜在问题:
- 若
active_shards_percent_as_number
<
100
%
< 100\%
<100%,需检查 unassigned_shards
原因。 relocating_shards
>
0
> 0
>0 时可能因节点下线触发再平衡,短暂影响性能。pending_tasks
持续增加可能表明主节点处理能力不足。
1.3 关键监控建议
- 重点关注:
status
、unassigned_shards
、relocating_shards
。 - 告警阈值:
status
变为 yellow
/ red
立即告警。unassigned_shards
>
0
> 0
>0 持续
5
5
5 分钟需介入。
- 扩展检查:若发现异常,可结合
GET _cat/shards?v
查看具体未分配分片的索引和节点。

2.节点各项指标(_cat/nodes)
GET _cat/nodes?v

以下是 GET _cat/nodes?v
命令返回的各列参数的含义详解。
2.1 参数详解
2.1.1 基础信息列
列名
|
含义
|
示例值解析
|
---|
ip | 节点 IP 地址 | 192.168.1.62 表示节点的网络地址 |
name | 节点名称 | 节点唯一标识 |
2.1.2 资源使用率列
列名
|
含义
|
健康阈值
|
计算方式
|
---|
heap.percent | JVM 堆内存使用百分比 |
≥
75
%
≥75\%
≥75% 需关注 | 已用堆内存 / 最大堆内存(Xmx) |
ram.percent | 机器总内存使用率 |
≥
85
%
≥85\%
≥85% 需关注 | (总内存 - 可用内存) / 总内存 |
cpu | CPU 使用率(瞬时值) |
≥
70
%
≥70\%
≥70% 持续需关注 | 当前 CPU 时间片的占用百分比 |
2.1.3 系统负载列
列名
|
含义
|
健康解读
|
---|
load_1m |
1
1
1 分钟平均负载 | 理想值
≤
≤
≤ CPU 核数 |
load_5m |
5
5
5 分钟平均负载 | 持续高值表明系统压力 |
load_15m |
15
15
15 分钟平均负载 | 长期高负载需扩容 |
分析:示例中所有节点负载接近
0
0
0,说明集群空闲。若负载值为
4
4
4(且 CPU 为
8
8
8 核),则利用率约
50
%
50\%
50%。
2.1.4 节点角色列
列名
|
含义
|
角色缩写解析
|
---|
node.role | 节点角色组合 | dimr 是缩写。d :数据节点;i :
i
n
g
e
s
t
ingest
ingest 节点;m :主节点候选;r :协调节点 |
master | 是否是当前主节点 | * 表示该节点是主节点(示例中 192.168.1.63 是主节点) |
2.2 其他隐含重要信息
- 节点角色组合规则
- 纯数据节点:
d
- 主 + 数据节点:
dimr
- 专用主节点:
m
(不应有数据)
- JVM 堆内存异常
- 示例中
heap.percent
在
32
%
−
47
%
32\%-47\%
32%−47%之间,若持续接近
75
%
75\%
75% 需调整 JVM 参数或排查内存泄漏。
- CPU 使用率为 0 的问题
2.3 关键监控建议
- 重点关注
ram.percent
和 heap.percent
的差值(差值大说明堆外内存使用高)。- 主节点标识
*
的位置(确保主节点不过载)。
- 异常场景
# 危险信号示例:
ip heap.percent ram.percent cpu load_15m node.role master name
192.168.1.64 95 98 100 10.0 dimr * node-1
问题:堆内存将满、CPU 打满、系统过载,主节点可能崩溃。 - 扩展命令
GET _nodes/stats?filter_path=nodes.*.name,nodes.*.jvm.mem,nodes.*.os.cpu
