ElasticSearch 常用运维命令收集
1. 集群健康检查
-
快速查看
curl -XGET 'localhost:9200/_cat/health?v&pretty'
- 集群的健康状态status,还可以了解到集群当前有多少节点number_of_nodes,多少个数据节点number_of_data_nodes,有多少个主分片active_primary_shards,以及正在搬迁中的分片relocating_shards、初始化中的分片initializing_shards,还未正常分配的分片unassigned_shards等信息。如果集群是非green状态,我们还可以通过active_shards_percent_as_number来查看集群恢复的进度。
另外从number_of_pending_tasks参数也能够看出当前集群的任务堆积情况,如果number_of_pending_tasks数量较大,则表明Master在处理task时有点力不从心,承载的压力较大了。
-
输出里最重要的就是 status 这行。很多开源的 ES 监控脚本,其实就是拿这行数据做报警判断。status 有三个可能的值:
green 绿灯,所有分片都正确运行,集群非常健康。
yellow 黄灯,所有主分片都正确运行,但是有副本分片缺失。这种情况意味着 ES 当前还是正常运行的,但是有一定风险。注意,在 Kibana4 的 server 端启动逻辑中,即使是黄灯状态,Kibana 4 也会拒绝启动,死循环等待集群状态变成绿灯后才能继续运行。
red 红灯,有主分片缺失。这部分数据完全不可用。而考虑到 ES 在写入端是简单的取余算法,轮到这个分片上的数据也会持续写入报错。
对 Nagios 熟悉的读者,可以直接将这个红黄绿灯对应上 Nagios 体系中的 Critical,Warning,OK 。
-
另外一个命令: “curl -XGET ‘localhost:9200/_cluster/health’”
-
有一个level参数,该参数是一个可选参数,提供了三种枚举值,分别是cluster、indices和shards。默认就是cluster,如果我们需要查看索引或者分片维度的健康信息,则可以使用如下API。
GET /_cluster/health?level=indices
GET /_clust
-