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