简述
本文针对 Elasticsearch(简称ES)集群6.x版本出现故障时,可通过提供的命令进行排查。
1、集群健康状态
|--------|------------------------|-------------------------------------------|
| 集群健康状态 | 状态 | 说明 |
| red | 不是所有的主要分片都可用。 | 表示该集群中存在不可用的主分片。可以理解为某个或者某几个索引存在主分片丢失的情况。 |
| yellow | 所有主要分片可用,但不是所有副本分片都可用。 | 表示该集群中某个或者某几个索引存在副本分片存在丢失的情况。 |
| green | 所有主要分片和副本分片都可用。 | 表示集群中所有的索引都很健康,不存在丢失的分片。 |
status:集群状态,分为green、yellow、red。
number_of_nodes/number_of_data_nodes:集群的节点数和数据节点数。
active_primary_shards:集群中所有活跃的主分片数。
active_shards:集群中所有活跃的分片数。
relocating_shards:当前节点迁往其他节点的分片数量,通常为0,当有节点加入或者退出时该值会增加。
initializing_shards:正在初始化的分片。
unassigned_shards:未分配的分片数,通常为0,当有某个节点的副本分片丢失该值就会增加。
number_of_pending_tasks:是指主节点创建索引并分配shards等任务,如果该指标数值一直未减小代表集群存在不稳定因素
active_shards_percent_as_number:集群分片健康度,活跃分片数占总分片数比例。
number_of_pending_tasks:pending task只能由主节点来进行处理这些任务包括创建索引并将shards分配给节点。
2、集群命令
|----------------------------------|----------------------------------------------------------------------------------------|
| 命令 | 说明 |
| 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 | 查看集群设置。 |
3、节点命令
|---------------------------------------|------------------------------------------------|
| 命令 | 说明 |
| 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?interval=10s | 查看高消耗的线程所执行的任务。抓取10s的节点上占用资源的热线程 |
| GET /_nodes/<nodeip>/jvm,process,os | 查看指定节点的JVM、进程和操作系统信息。 |
| GET _cat/plugins?v | 查看各节点的插件信息。 |
| GET /_cat/thread_pool?v | 查看各节点的线程池统计信息。包括线程池的类型、活跃线程数、任务队列大小等。 |
4、分片命令
|------------------------|------------------------------------------------------------------------------------------------------------------------------------|
| 命令 | 说明 |
| GET /_cat/shards?v | 查看集群中各分片的详细情况。包括索引名称、分片编号、是主分片还是副分片、分片的当前状态(对于分配失败的分片会有失败原因)、doc数量、磁盘占用情况等。您也可以指定index,查看该index的分片信息(GET _cat/shards/<index>?v)。 |
| GET /_cat/allocation?v | 查看集群中每个节点的分片分配情况。 |
| GET /_cat/recovery?v | 查看集群中每个分片的恢复过程。 |
| /_cat/segments?v | 查看集群中各索引的segment信息。包括segment名称、所属shard、内存或磁盘占用大小、是否刷盘等。您也可以指定index,查看该index的segment信息 |
5、索引命令
|---------------------|-----------------------------------------------------------------------------------------|
| 命令 | 说明 |
| GET /_cat/indices?v | 查看集群中所有索引的详细信息。包括索引的健康度、状态、分片数和副本数、包含的文档数等。您也可以查看指定索引的信息(GET _cat/indices/<index>?v)。 |
| GET /_cat/aliases?v | 查看集群中所有aliases(索引别名)的信息。包括aliases对应的索引、路由配置等。 |
6、Mapping 命令
|----------------------------------|--------------------|
| 命令 | 说明 |
| GET /_mapping | 查看集群中所有索引的Mapping。 |
| GET /<index>/<type>/_mapping | 查看指定索引的Mapping。 |
7、查看文档
|--------------------------------|-------------------------------------------------------------------|
| 命令 | 说明 |
| GET /_cat/count?v | 查看集群中的文档数量。您也可以指定index,查看该index的文档数量(GET _cat/count/<index>?v)。 |
| GET /<index>/<type>/<id> | 查看文档中的数据。 |
8、快照
|-----------------------------------------|---------|
| 命令 | 说明 |
| GET _snapshot/_all | 查看所有快照。 |
| GET _snapshot/<snapshot_name>/_status | |
9、搜索命令
|----------------------|--------------------------------------|
| 命令 | 说明 |
| GET /_search?explain | explain 参数可以让返回结果添加一个 _score 评分的得来依据 |
| | |