> 技术文档 > 【Elasticsearch】_cluster/health 和 _cat/nodes 命令详解

【Elasticsearch】_cluster/health 和 _cat/nodes 命令详解


_cluster/health 和 _cat/nodes 命令详解

  • 1.集群健康状态(_cluster/health)
    • 1.1 参数详解
      • 1.1.1 基础信息
      • 1.1.2 节点分片状态
      • 1.1.3 分片分配状态
      • 1.1.4 集群任务与负载
    • 1.2 健康状态分析示例
    • 1.3 关键监控建议
  • 2.节点各项指标(_cat/nodes)
    • 2.1 参数详解
      • 2.1.1 基础信息列
      • 2.1.2 资源使用率列
      • 2.1.3 系统负载列
      • 2.1.4 节点角色列
    • 2.2 其他隐含重要信息
    • 2.3 关键监控建议

1.集群健康状态(_cluster/health)

1.1 参数详解

GET _cluster/health

【Elasticsearch】_cluster/health 和 _cat/nodes 命令详解

以下是 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 关键监控建议

  • 重点关注statusunassigned_shardsrelocating_shards
  • 告警阈值
    • status 变为 yellow / red 立即告警。
    • unassigned_shards > 0 > 0 >0 持续 5 5 5 分钟需介入。
  • 扩展检查:若发现异常,可结合 GET _cat/shards?v 查看具体未分配分片的索引和节点。

【Elasticsearch】_cluster/health 和 _cat/nodes 命令详解

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

GET _cat/nodes?v

【Elasticsearch】_cluster/health 和 _cat/nodes 命令详解

以下是 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 的问题
    • 可能原因:
      • 集群空闲
      • 监控周期恰逢 CPU 空闲
    • 需结合 load_ 指标综合判断。

2.3 关键监控建议

  • 重点关注
    • ram.percentheap.percent 的差值(差值大说明堆外内存使用高)。
    • 主节点标识 * 的位置(确保主节点不过载)。
  • 异常场景
    # 危险信号示例:ip  heap.percent ram.percent cpu load_15m node.role master name192.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

    【Elasticsearch】_cluster/health 和 _cat/nodes 命令详解