首页/数据/NoSQL 速查/_cat/nodes 查看节点负载
Elasticsearch89 条

_cat/nodes 查看节点负载

_cat/nodes 汇总每个节点的角色、堆内存使用率、磁盘水位、CPU 与负载;巡检时用 h= 挑关键列,快速定位资源偏高的节点。

NoSQL 速查数据更新于 2026-10-13

_cat/nodes 是什么

_cat/nodes 汇总每个节点的角色、堆内存使用率、内存占用、CPU 与负载,是集群巡检中定位资源瓶颈最快的接口。用 h= 挑选关键列可把输出压缩到一屏,用 s= 排序能立刻看出哪台机器最吃紧。节点角色决定它承担哪类工作:主节点、数据节点、协调节点各有不同的压力特征。

基本信息

接口GET /_cat/nodes?v
常用列ip、name、heap.percent、ram.percent、cpu、load_1m、disk.used_percent
角色列m 主节点候选、d 数据节点、i 摄取节点、l 机器学习、v 仅投票
辅助参数h= 选列、s= 排序、format=json
适用版本Elasticsearch 7.x / 8.x
配套接口_cat/allocation、_nodes/stats

典型使用场景

  • 巡检时快速找出堆内存使用率最高的节点
  • 确认磁盘水位是否接近分配阈值,避免分片停止分配
  • 排查写入变慢:看摄取节点的 CPU 与负载是否满
  • 主节点选举异常时确认候选节点数量与角色分布
  • 扩容前评估各节点负载是否均衡
  • 结合 _cat/allocation 核对分片数与磁盘占用

示例

示例
GET /_cat/nodes?v&h=ip,name,node.role,master,heap.percent,ram.percent,cpu,disk.used_percent
GET /_cat/nodes?v&s=heap.percent:desc                  # 按堆使用率排降序
GET /_cat/nodes?v&s=disk.used_percent:desc             # 找磁盘最满的节点
GET /_cat/nodes?v&h=ip,name,load_1m,load_5m,cpu&format=json   # 机器可读输出

关键列读法

列名含义异常信号
heap.percentJVM 堆使用率长期高于 75% 需关注 GC
ram.percent系统内存使用率接近 100% 说明缓存吃满
cpuCPU 使用率持续高位说明算力不足
load_1m1 分钟系统负载与核数对比才有效
disk.used_percent磁盘使用率接近水位线会停止分配分片
node.role节点角色组合角色分布不均会形成瓶颈
堆使用率长期高于 75% 且伴随频繁 GC 时,优先考虑加堆或扩节点,而不是继续往同一批节点上压任务。
load_1m 是操作系统负载而不是 CPU 百分比,需要与该机器的核数对比才能判断是否过载。
节点角色列的字符含义随版本演进,脚本解析建议用 format=json 读字段名,而不是按固定位置截取字符。

易错点

  • load_1m 是系统负载不是 CPU 百分比,脱离核数判断会得出错误结论
  • 角色列的字符随版本变化,按固定位置解析容易踩坑,应改用 JSON 输出
  • 只看堆使用率不看 GC 日志,可能漏掉频繁回收导致的停顿问题
  • 磁盘水位接近阈值时会停止分配新分片,巡检必须同时看 disk.used_percent
  • 把主节点与数据节点混部在负载高的机器上,会影响集群状态更新与选举稳定性

数据来源与参考

  • Elasticsearch Guide: cat nodes API
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌