Elasticsearch Cat APIs:简洁高效的集群监控工具
Elasticsearch 的 _cat APIs 提供了一套轻量级、文本格式的接口,用于快速查看集群、索引、节点等核心组件的状态信息。与 _cluster 或 _indices 等返回 JSON 格式的 API 相比,_cat 输出更简洁直观,类似命令行工具的结果,适合快速诊断和监控。
Cat APIs 核心特点
- 轻量易读:返回纯文本或表格格式,包含表头(加
?v参数),一目了然。 - 功能全面:覆盖集群健康、索引状态、节点信息、分片分布等核心监控维度。
- 灵活过滤:支持通过参数筛选字段(
?h=字段名)、排序(?s=字段:desc)、匹配索引(/indices/索引名)等。
常用 Cat APIs 详解
集群健康状态:_cat/health
查看集群整体健康状态,包括节点数量、分片状态等。
1 | GET _cat/health?v # 加?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:数据节点数。
索引信息:_cat/indices
查看所有索引的基本信息,如健康状态、分片数、文档数、存储大小等。
1 | GET _cat/indices?v # 所有索引 |
输出示例:
1 | health status index uuid pri rep docs.count docs.deleted store.size pri.store.size |
关键字段:
pri:主分片数;rep:副本数。store.size:总存储大小(含副本);pri.store.size:主分片存储大小。
节点信息:_cat/nodes
查看集群中所有节点的资源使用情况,如内存、CPU、角色等。
1 | GET _cat/nodes?v |
输出示例:
1 | ip heap.percent ram.percent cpu load_1m load_5m node.role master name |
关键字段:
heap.percent:JVM 堆内存使用率;ram.percent:物理内存使用率。node.role:节点角色(m主节点候选;d数据节点;iingest 节点)。master:*表示当前主节点,-表示非主节点。
分片分布:_cat/shards
查看索引分片的分布情况,包括主 / 副本分片所在节点、状态等。
1 | GET _cat/shards?v # 所有分片 |
输出示例:
1 | index shard prirep state docs store ip node |
关键字段:
prirep:p主分片;r副本分片。state:分片状态(STARTED正常;INITIALIZING初始化中;UNASSIGNED未分配)。
文档计数:_cat/count
快速查询集群或指定索引的文档总数。
1 | GET _cat/count?v # 集群总文档数 |
输出示例:
1 | epoch timestamp count |
插件信息:_cat/plugins
查看各节点安装的插件列表。
1 | GET _cat/plugins?v |
输出示例:
1 | name component version description |
实用参数与技巧
筛选字段(
?h=字段名):只显示需要的字段,减少冗余。1
GET _cat/indices?h=index,health,pri,rep,docs.count # 只显示索引名、健康状态、主副本数、文档数
排序(
?s=字段:desc/asc):按指定字段排序(如按存储大小降序)。1
GET _cat/indices?v&s=store.size:desc # 按存储大小降序排列
精确匹配(
/indices/索引名):只查询特定索引(支持通配符)。1
GET _cat/indices/logs-*?v # 只显示名称以logs-开头的索引
JSON 格式输出(
?format=json):适合程序解析。1
GET _cat/health?format=json # 返回JSON格式的集群健康信息
常用场景示例
快速检查集群健康:
1
GET _cat/health?v # 确认status是否为green
查看索引存储占用:
1
GET _cat/indices?v&h=index,store.size&s=store.size:desc # 按存储大小排序索引
排查分片未分配问题:
1
GET _cat/shards?v&h=index,shard,prirep,state,node # 筛选出state为UNASSIGNED的分片
监控节点资源负载:
1
GET _cat/nodes?v&h=name,heap.percent,cpu,load_1m # 查看节点堆内存、CPU和1分钟负载