ElasticSearch 状态查询Cat接口

本文介绍如何使用Elasticsearch的Cat API查询集群状态,包括节点信息、机器存储情况、索引与分片详情,帮助理解集群的运行状况和资源分配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

状态查询Cat接口

节点信息

接口 GET _cat/nodes?v 列出所有node, 并展示node所在机器的运行状态信息.

ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1           13          41  10                          mdi       -      node-2
127.0.0.1           15          41   9                          mdi       *      node-1
  1. heap.percent 堆内存占用百分比
  2. ram.percent 内存占用百分比
  3. cpu CPU占用百分比
  4. master *表示节点是集群中的主节点
  5. name 节点名

注 : 本文中笔者在自己本机运行了两个Elasticsearch节点, 故ip都是一样的. 但是两个节点的端口和节点名是不同的.

各节点机器存储信息

接口 GET _cat/allocation?v 列出所有node, 并展示所属机器的配置信息.

shards disk.indices disk.used disk.avail disk.total disk.percent host      ip        node
    6       24.7kb    36.2gb     33.9gb     70.2gb           51 127.0.0.1 127.0.0.1 node-2
    6       24.7kb    36.2gb     33.9gb     70.2gb           51 127.0.0.1 127.0.0.1 node-1
  1. shards 节点说承载的分片数
  2. disk.indices 索引占用的空间大小
  3. disk.used 节点所在机器已使用磁盘空间
  4. ip 节点所属机器IP地址
  5. node 节点名
索引信息

接口 GET _cat/indices?v 列出所有索引, 并展示索引基本信息

health status index     uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana   FHyzVY-nRXi9bFQZuPhbsg   1   1          2            0     16.8kb          8.4kb
green  open   xenoblade 118dhMMHToGq-bh5p_MpVg   5   1          3            0     32.5kb         16.2kb
  1. health 索引的健康状态
  2. index 索引名
  3. pri 索引主分片数量
  4. rep 索引复制分片
  5. store.size 索引主分片 复制分片 总占用存储空间
  6. pri.store.size 索引总占用空间, 不计算复制分片 占用空间
分片信息

接口GET _cat/shards?v 列出集群中所有分片, 并展示基础信息

index     shard prirep state   docs store ip        node
xenoblade 3     r      STARTED    1 5.4kb 127.0.0.1 node-1
xenoblade 3     p      STARTED    1 5.4kb 127.0.0.1 node-2
xenoblade 4     p      STARTED    1 5.5kb 127.0.0.1 node-1
xenoblade 4     r      STARTED    1 5.5kb 127.0.0.1 node-2
xenoblade 2     p      STARTED    1 4.9kb 127.0.0.1 node-1
xenoblade 2     r      STARTED    1 4.9kb 127.0.0.1 node-2
xenoblade 1     r      STARTED    0  162b 127.0.0.1 node-1
xenoblade 1     p      STARTED    0  162b 127.0.0.1 node-2
xenoblade 0     p      STARTED    0  162b 127.0.0.1 node-1
xenoblade 0     r      STARTED    0  162b 127.0.0.1 node-2
.kibana   0     p      STARTED    2 8.4kb 127.0.0.1 node-1
.kibana   0     r      STARTED    2 8.4kb 127.0.0.1 node-2
  1. index 索引名称
  2. shard 分片序号
  3. prirep p表示该分片是主分片, r 表示该分片是复制分片
  4. store 该分片占用存储空间
  5. node 所属节点节点名
  6. docs 分片存放的文档
<think>嗯,用户之前问过关于Elasticsearch官方Helm Chart数据目录的问题,现在又想知道如何检测ES集群状态接口。可能他正在部署或维护一个Elasticsearch集群,遇到了问题需要监控集群状态。 首先,我需要确认用户的需求。检测集群状态接口通常指的是Elasticsearch提供的REST API,用于获取集群的健康状况、节点信息、索引状态等。用户可能想通过API来监控集群是否正常运行,或者排查问题。 用户可能对Elasticsearch的API不太熟悉,或者需要具体的示例和步骤。考虑到他之前使用Helm部署,可能是在Kubernetes环境中运行ES,需要知道如何从集群内部或外部访问这些API。 接下来,我需要整理常用的集群状态检测接口。比如_cluster/health,_cat/nodes,_cat/indices等。每个接口的用途、返回的数据格式以及如何解读这些信息都是关键点。此外,用户可能需要知道如何在K8s环境中执行这些请求,比如通过kubectl port-forward或者curl到具体的Pod。 还要考虑用户可能的错误情况,比如集群健康状态为red或yellow时如何处理,如何查看未分配的分片,或者节点离线时的应对措施。这些内容可以加入到故障诊断部分,帮助用户更全面地解决问题。 另外,用户可能关心认证和安全性,特别是如果集群启用了安全特性(如X-Pack),需要提供用户名和密码。在示例中需要包含这些细节,比如使用curl的-u参数。 最后,确保回答结构清晰,步骤详细,并提供验证方法,比如预期的输出示例,让用户能够对照检查自己的集群状态。同时,补充一些高级监控工具的建议,如Elastic Stack的集成监控方案,可能对用户后续的运维工作有帮助。</think>### $\textsf{Elasticsearch 集群状态检测接口指南}$ --- #### $\textcolor{orange}{\textbf{核心状态检测 API}}$ 1. **集群健康检查**(基础指标) ```bash # 基础健康状态 curl -XGET "http://<es-host>:9200/_cluster/health?pretty" ``` $\textcolor{green}{\textbf{关键字段说明}}$: ```json { "cluster_name": "my-cluster", // 集群名称 "status": "green", // 健康状态(green/yellow/red) "timed_out": false, // 是否超时 "number_of_nodes": 3, // 总节点数 "active_primary_shards": 10, // 活跃主分片 "active_shards": 20, // 总活跃分片 "unassigned_shards": 0 // 未分配分片(危险指标) } ``` 2. **节点状态明细** ```bash # 详细节点拓扑 curl -XGET "http://<es-host>:9200/_cat/nodes?v&h=ip,name,role,heap%,ram%,load,diskUsedPercent,master" ``` $\textcolor{green}{\textbf{输出示例}}$: ``` ip name role heap% ram% load diskUsedPercent master 10.1.2.101 node-01 d 35 95 0.12 45.2% - 10.1.2.102 node-02 m 28 93 0.08 42.1% * ``` 3. **分片分配诊断** ```bash # 未分配分片检测 curl -XGET "http://<es-host>:9200/_cluster/allocation/explain?pretty" ``` --- #### $\textcolor{blue}{\textbf{Kubernetes 环境特殊访问方式}}$ $\textcolor{orange}{\triangleleft}$ **通过端口转发访问**: ```bash kubectl port-forward svc/elasticsearch-master 9200:9200 -n elastic-system ``` $\textcolor{orange}{\triangleright}$ **容器内直连**: ```bash kubectl exec elasticsearch-master-0 -- curl -s "http://localhost:9200/_cluster/health" ``` --- #### $\textcolor{red}{\textbf{高级诊断接口}}$ 1. **Pending Tasks 检测** ```bash curl "http://<es-host>:9200/_cluster/pending_tasks?pretty" ``` 2. **线程池状态** ```bash curl "http://<es-host>:9200/_nodes/thread_pool?v" ``` 3. **热点索引定位** ```bash curl "http://<es-host>:9200/_nodes/hot_threads" ``` --- #### $\textcolor{green}{\textbf{状态码速查表}}$ | HTTP 状态码 | 含义 | 典型场景 | |-------------|-------------------------|----------------------------| | 200 | 请求成功 | 正常响应 | | 401 | 认证失败 | 未启用安全配置或密码错误 | | 503 | 服务不可用 | 主节点选举未完成 | | 429 | 请求限流 | 线程池队列满 | --- ### $\textcolor{purple}{\textsf{安全集群访问示例}}$ $\textcolor{orange}{\triangleright}$ **带认证的请求**: ```bash curl -u elastic:your_password -XGET "https://<es-host>:9200/_cluster/health" \ --cacert /path/to/http_ca.crt ``` --- ### $\textcolor{orange}{\textsf{故障诊断流程}}$ 1. **健康状态为 red** ```bash # 查看问题索引 curl "http://<es-host>:9200/_cat/indices?v&health=red" # 强制分配分片(谨慎使用) curl -XPOST "http://<es-host>:9200/_cluster/reroute?retry_failed" ``` 2. **节点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值