ElasticSearch 常用运维命令收集

ElasticSearch 常用运维命令收集

1. 集群健康检查

  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 。

  2. 另外一个命令: “curl -XGET ‘localhost:9200/_cluster/health’”

    • 有一个level参数,该参数是一个可选参数,提供了三种枚举值,分别是cluster、indices和shards。默认就是cluster,如果我们需要查看索引或者分片维度的健康信息,则可以使用如下API。

      GET /_cluster/health?level=indices
      GET /_cluster/health?level=shards

  3. 集群节点监控

    curl -XGET 'localhost:9200/_cat/nodes?v&pretty'
    ip             heap.percent ram.percent cpu load_1m load_5m load_15m node.role  master name
    172.18.225.251           59          98  14    2.28    2.21     1.75 cdhilmrstw *      es-node01
    

    这是一个针对Elasticsearch集群节点的_cat/nodes API请求的响应。以下是各字段的含义以及如何识别风险:

    • ip:节点的IP地址。
    • heap.percent:JVM堆内存使用百分比。
    • ram.percent:系统内存使用百分比。
    • cpu:节点的CPU使用率。
    • load_1m、load_5m、load_15m:节点的1分钟、5分钟和15分钟的平均负载。
    • node.role:节点的角色,例如 cdhilmrstw 表示节点具有的角色。
    • master:表示节点是否是主节点。
    • name:节点的名称。
    • 单纯查看节点信息 (可以用来做Nginx健康检查使用)

      curl -XGET ‘localhost:9200’

  4. 所有索引的信息,包括索引的名称、文档数量、存储大小等。

    • curl -XGET ‘localhost:9200/_cat/indices?v’

    • :确定哪些索引有问题,多少索引有问题。
      _cat API 可以通过返回结果告诉我们这一点:
      GET _cat/indices?v&health=red
      GET _cat/indices?v&health=yellow
      GET _cat/indices?v&health=green

  5. Elasticsearch集群中所有分片的信息,包括分片所在的节点、分片状态等。

    curl -XGET 'localhost:9200/_cat/shards?v'
    
  6. Elasticsearch集群中所有节点的性能统计信息,包括内存使用情况、CPU负载、线程池情况等。

    • curl -XGET ‘localhost:9200/_nodes/stats?pretty’

      • 在_nodes/stats命令的输出中,以下是一些最值得关注的关键信息:

        1. 内存使用情况:包括内存总量、已使用内存、剩余内存等信息,以及内存池的使用情况。

        2. CPU负载:包括CPU使用率、每个CPU核心的负载情况,以及CPU线程池的情况。

        3. 线程池情况:包括搜索线程池、索引线程池、刷新线程池等的活跃线程数、队列大小等信息。

        4. 文件系统情况:包括磁盘总容量、已使用容量、剩余容量等信息。

        5. 网络情况:包括网络接口的发送和接收数据量、连接数等信息。

        6. JVM情况:包括JVM堆内存使用情况、垃圾回收情况、类加载情况等信息。

        7. 索引情况:包括索引的数量、文档数量、存储大小等信息。

        8. 缓存情况:包括字段数据缓存、请求缓存、索引缓存等的命中率、大小等信息。

        9. 负载情况:包括每个节点的负载情况,如搜索请求、索引请求等的数量和响应时间。

        这些信息可以帮助您全面了解Elasticsearch集群的性能情况,包括节点的资源利用情况、负载情况、缓存命中率等,有助于监控和优化集群的性能表现。

    • _nodes/process?pretty

    • 查看节点中fielddata占用堆内存空间的大小。

      GET _cat/fielddata?v

    • 当构建单元和集成测试时,或者实现和 Elasticsearch 相关的自动化脚本时,cluster-health API 还有另一个小技巧非常有用。你可以指定一个 wait_for_status 参数,它只有在状态达标之后才会返回。比如:

      GET _cluster/health?wait_for_status=green
      这个调用会 阻塞 (不给你的程序返回控制权)住直到 cluster-health 变成 green ,也就是说所有主分片和副本分片都分配下去了。这对自动化脚本和测试非常重要。

  7. 查看并发请求,TPS,QPS 等情况

    1. 并发连接数
      curl -XGET ‘localhost:9200/_cat/thread_pool?v’
      集群中各种线程池的情况,包括活跃线程数、队列大小等信息。您可以关注active字段,它表示当前的活跃线程数,可以用来估算并发连接数。

    2. 查看每秒事务数(TPS):
      curl -XGET ‘localhost:9200/_cat/indices?v’
      这个命令将返回Elasticsearch集群中所有索引的信息,包括文档数量、存储大小等。通过监测文档索引的增长速度,可以估算每秒事务数(TPS)。

    3. 查看每秒查询数(QPS):
      curl -XGET ‘localhost:9200/_cat/indices?v’

      通过监测每个索引的查询请求增长速度,可以估算每秒查询数(QPS)。
      
    4. 您还可以考虑使用Elasticsearch的Monitoring插件或者Elasticsearch的X-Pack监控功能来更直观地查看每秒事务数(TPS)、每秒查询数(QPS)等数据。

  8. 常用命令

    集群运维常用命令总结

    本文我们从集群运维角度出发,向大家介绍了我们在日常的集群运维工作中常用到的集群维度相关命令。下面以表格的形式总结如下:

    命令 API命令说明
    GET /_cluster/health 查看集群健康状态等信息
    GET /_cat/pending_tasks 查看集群任务堆积情况
    GET /_cluster/state// 查看集群详细的元数据信息
    GET /_cluster/stats 查看集群各维度的统计信息,包括节点CPU、JVM等使用率情况
    GET _cluster/allocation/explain 查看集群分片分配详情
    POST /_cluster/reroute 更改分片分配策略
    GET /_cluster/settings 查看集群层面settings设置信息
    GET /_tasks 查看集群中正在执行的task信息
    GET /_cat/pending_tasks 查看任务堆积详情
    GET /_cluster/pending_tasks 查看任务堆积详情 (从该API中可以更加直观的看到该task是否在执行executing,以及在队列中等待的时间time_in_queue_millis等详细信息。)

2. 索引类

  • 查询全部索引下的文档总数:

    GET /_cat/count
    
  • 查询某个索引下的文档总数(为索引名):

    GET /_cat/count/
    
  • 查看全部索引状态(存储与文档数)

    curl -XGET 'localhost:9200/_cat/indices?v&pretty'
    health status index      uuid                   pri rep docs.count docs.deleted store.size pri.store.size
    yellow open   evaluating xlVUWY5CTR6f3wUemFLj0w   1   1   12129994       132415      6.4gb          6.4gb
    

3. 分片类

  • 查看集群分片分配详情
    GET _cluster/allocation/explain

  • GET _cluster/allocation/explainAPI,查看分配失败的具体原因

你可能感兴趣的:(elasticsearch,运维,大数据)