Elasticsearch 系统状态查询:使用 Cat APIs 监控集群
Elasticsearch 提供了一系列 cat APIs
(基于 HTTP 的 REST 接口),以简洁的文本格式展示集群、索引、节点等核心组件的状态信息,便于开发者和运维人员快速监控系统运行情况。这些 API 输出格式直观(类似命令行工具),支持通过参数筛选和格式化输出。
Cat APIs 核心特点
- 轻量高效:返回纯文本或表格格式,数据量小,适合快速查看。
- 易于解析:支持
v
参数显示表头,h
参数筛选字段,便于脚本处理。 - 覆盖全面:涵盖集群健康、节点状态、索引信息、分片分配等核心指标。
常用 Cat APIs 详解
集群健康状态:_cat/health
展示集群的整体健康状态(绿色 / 黄色 / 红色)、节点数量、分片状态等。
1 | GET _cat/health?v |
输出示例:
1 | epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent |
字段说明:
status
:集群健康状态(green
/yellow
/red
)。node.total
:总节点数;node.data
:数据节点数。shards
:总分片数;pri
:主分片数;unassign
:未分配分片数。
节点信息:_cat/nodes
展示所有节点的基本信息,包括内存占用、CPU 负载、角色等。
1 | GET _cat/nodes?v |
输出示例:
1 | ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name |
字段说明:
heap.percent
:JVM 堆内存使用率;ram.percent
:物理内存使用率。node.role
:节点角色(m
:主节点,d
:数据节点,i
:ingest 节点)。master
:*
表示当前主节点,-
表示非主节点。
索引信息:_cat/indices
展示所有索引的基本信息,包括文档数、存储大小、健康状态等。
1 | GET _cat/indices?v |
输出示例:
1 | health status index uuid pri rep docs.count docs.deleted store.size pri.store.size |
字段说明:
health
:索引健康状态(由分片状态决定)。pri
:主分片数;rep
:副本分片数。docs.count
:文档总数;docs.deleted
:标记删除的文档数。store.size
:总存储大小(含副本);pri.store.size
:主分片存储大小。
分片分配:_cat/allocation
展示各节点的分片分配情况及磁盘使用量。
1 | GET _cat/allocation?v |
输出示例:
1 | shards disk.indices disk.used disk.avail disk.total disk.percent host ip node |
字段说明:
shards
:节点上的分片总数。disk.indices
:索引数据占用的磁盘空间。disk.used
/disk.avail
:节点已用 / 可用磁盘空间。
索引模板:_cat/templates
展示已创建的索引模板信息(模板用于自动配置新索引的映射和设置)。
1 | GET _cat/templates?v |
输出示例:
1 | name index_patterns order version |
字段说明:
index_patterns
:模板匹配的索引名称模式。order
:模板优先级(数值越大,优先级越高,冲突时覆盖)。
插件信息:_cat/plugins
展示各节点安装的插件列表。
1 | GET _cat/plugins?v |
输出示例:
1 | name component version description |
快照与仓库:_cat/snapshots
和 _cat/repositories
_cat/repositories
:展示注册的快照仓库(用于备份数据)。1
GET _cat/repositories?v
输出:
id type; repo1 fs; repo2 s3
(fs
表示本地文件系统,s3
表示 AWS S3)。_cat/snapshots/repo1?v
:展示指定仓库(如repo1
)中的快照信息。
线程池状态:_cat/thread_pool
展示各节点线程池的运行状态(如活跃线程数、队列大小),用于诊断性能瓶颈。
1 | GET _cat/thread_pool?v |
输出示例(截取部分):
1 | node_name thread_pool name active queue rejected |
字段说明:
active
:活跃线程数;queue
:等待执行的任务队列长度。rejected
:被拒绝的任务数(队列满时发生,需关注)。
实用参数与技巧
筛选字段(
h
参数):只显示需要的字段,减少输出冗余。1
GET _cat/indices?h=health,index,pri,rep,docs.count # 只显示健康状态、索引名、主副本数、文档数
排序(
s
参数):按指定字段排序(如按存储大小降序)。1
GET _cat/indices?v&s=store.size:desc # 按存储大小降序排列
匹配索引(
index
参数):只查询特定索引(支持通配符)。1
GET _cat/indices/product*?v # 只显示名称以product开头的索引
格式化输出(
format
参数):支持json
格式输出,便于程序解析。1
GET _cat/health?format=json # 返回JSON格式的集群健康信息
v1.3.10