公司的监控系统使用了curl -s http://localhost:9200/_cat/health?v
来获取集群的健康状态。
那么_cat/health?v返回的结果到底什么意思呢?每个结果对生产环境的集群健康到底有什么参考意义呢?
_cat/health?v介绍
1、用途
此命令常见的用途一般有两个:
1、验证节点之间的健康状况是否一致,
2、跟踪大型集群随时间的故障恢复情况
2、结果解析
正常情况下,执行curl -s http://localhost:9200/_cat/health?v
命令得到的结果如下:
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1558506494 14:28:14 hdzx_elk green 3 3 282 141 0 0 0 0 - 100.0%
含义如下:
前两个是时间戳,不过多介绍。其余如下:
- cluster ,集群名称
- status,集群状态 green代表健康;yellow代表分配了所有主分片,但至少缺少一个副本,此时集群数据仍旧完整;red代表部分主分片不可用,可能已经丢失数据。
- node.total,代表在线的节点总数量
- node.data,代表在线的数据节点的数量
- shards, active_shards 存活的分片数量
- pri,active_primary_shards 存活的主分片数量 正常情况下 shards的数量是pri的两倍。
- relo, relocating_shards 迁移中的分片数量,正常情况为 0
- init, initializing_shards 初始化中的分片数量 正常情况为 0
- unassign, unassigned_shards 未分配的分片 正常情况为 0
- pending_tasks,准备中的任务,任务指迁移分片等 正常情况为 0
- max_task_wait_time,任务最长等待时间
- active_shards_percent,正常分片百分比 正常情况为 100%
_cat/health?v测试
拿了三个节点