使用命令查看集群健康状态

更新时间:
复制为 MD 格式

通过KibanaDev Tools控制台执行运维命令,可以查看集群健康状态、节点负载、分片分配、索引信息等,用于日常巡检和故障排查。

前提条件

已创建阿里云ES实例,创建方法请参见创建阿里云Elasticsearch实例

操作步骤

  1. 登录目标阿里云ES实例的Kibana控制台。

    具体操作请参见登录Kibana控制台。以下所有命令均可在KibanaDev Tools控制台中执行。

  2. 在左侧导航栏,单击Dev Tools(开发工具)。

  3. Console中,执行以下命令查看集群的健康状态。

    GET /_cluster/health

    正常情况下,返回如下结果。

    {
      "cluster_name" : "es-cn-45xxxxxxxxxxxxk1q",
      "status" : "green",
      "timed_out" : false,
      "number_of_nodes" : 2,
      "number_of_data_nodes" : 2,
      "active_primary_shards" : 18,
      "active_shards" : 36,
      "relocating_shards" : 0,
      "initializing_shards" : 0,
      "unassigned_shards" : 0,
      "delayed_unassigned_shards" : 0,
      "number_of_pending_tasks" : 0,
      "number_of_in_flight_fetch" : 0,
      "task_max_waiting_in_queue_millis" : 0,
      "active_shards_percent_as_number" : 100.0
    }

    status表示集群的健康状态,取值为greenyellowred

    集群健康状态

    状态

    说明

    red

    不是所有的主要分片都可用。

    表示该集群中存在不可用的主分片。可以理解为某个或者某几个索引存在主分片丢失的情况。

    yellow

    所有主要分片可用,但不是所有副本分片都可用。

    表示该集群中某个或者某几个索引存在副本分片存在丢失的情况。

    green

    所有主要分片和副本分片都可用。

    表示集群中所有的索引都很健康,不存在丢失的分片。

    集群处于yellow状态时,密码修改、集群升配等变更操作耗时会显著增加。建议先修复集群状态为green再进行变更。常见原因是索引副本数超过节点数减1,修复步骤如下:

    • 查找状态为yellow的索引:

      curl -u <用户名>:<密码> http://<host>:9200/_cat/indices
    • 调整问题索引的副本数(设置为节点数减1):

      curl -XPUT -u <用户名>:<密码> http://<host>:9200/<有问题的索引名称>/_settings -H 'Content-Type: application/json' -d '{"index":{"number_of_replicas":(<当前节点数-1>)}'
      说明

      实例重启或扩容后,需根据最新节点数量重新调整索引副本数。

集群命令

命令

说明

GET /_cat/health?v

查看集群的健康状态。集群状态包括green、red、yellow,各状态的详细说明请参见上方操作步骤。

GET /_cluster/health?pretty=true

查看集群的健康状态。pretty=true表示格式化输出。也可以添加其他查询参数,例如:

  • level=indices:显示索引状态。

  • level=shards:显示分片信息。

GET /_cluster/stats

查看集群的系统信息,包括CPU、JVM等信息。

GET /_cluster/state

查看集群的详细信息,包括节点、分片等信息。

GET /_cluster/pending_tasks

查看集群中堆积的任务。

GET /_cluster/settings

查看集群设置。

节点命令

命令

说明

GET /_cat/master?v

查看集群中Master节点的信息。

GET /_cat/nodes?v

查看集群中各个节点的当前状态,包括节点CPU使用率、HeapMemory使用率、负载情况等。

GET /_cat/nodeattrs?v

查看单节点的自定义属性。

GET /_nodes/stats?pretty=true

查看节点状态。

GET /_nodes/process

查看节点的进程信息。

GET /_nodes/hot_threads

查看高消耗的线程所执行的任务。

GET /_nodes/<nodeip>/jvm,process,os

查看指定节点的JVM、进程和操作系统信息。

GET /_cat/plugins?v

查看各节点的插件信息。

GET /_cat/thread_pool?v

查看各节点的线程池统计信息,包括线程池的类型、活跃线程数、任务队列大小等。

分片命令

命令

说明

GET /_cat/shards?v

查看集群中各分片的详细情况,包括索引名称、分片编号、是主分片还是副分片、分片的当前状态(对于分配失败的分片会有失败原因)、doc数量、磁盘占用情况等。也可以指定index查看分片信息(GET _cat/shards/<index>?v)。

GET /_cat/allocation?v

查看集群中每个节点的分片分配情况。

GET /_cat/recovery?v

查看集群中每个分片的恢复过程。

Segments命令

GET /_cat/segments?v

查看集群中各索引的segment信息,包括segment名称、所属shard、内存或磁盘占用大小、是否刷盘等。也可以指定index查看segment信息(GET _cat/segments/<index>?v)。

索引命令

命令

说明

GET /_cat/indices?v

查看集群中所有索引的详细信息,包括索引的健康度、状态、分片数和副本数、包含的文档数等。也可以查看指定索引的信息(GET _cat/indices/<index>?v)。

GET /_cat/aliases?v

查看集群中所有aliases(索引别名)的信息,包括aliases对应的索引、路由配置等。

Mapping命令

命令

说明

GET /_mapping

查看集群中所有索引的Mapping。

GET /<index>/_mapping

查看指定索引的Mapping。

文档命令

命令

说明

GET /_cat/count?v

查看集群中的文档数量。也可以指定index查看文档数量(GET _cat/count/<index>?v)。

GET /<index>/_doc/<id>

查看文档中的数据。

快照命令

命令

说明

GET _snapshot/_all

查看所有快照。

GET _snapshot/<snapshot_name>/_status

查看指定快照的进度。