0%

Cat APIs

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
2
epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1690000000 12:30:00 my-cluster green 3 2 10 5 0 0 0 0 - 100.0%

关键字段:

  • status:集群健康状态(green 所有分片可用;yellow 主分片可用,副本不全;red 主分片不可用)。
  • node.total:总节点数;node.data:数据节点数。

索引信息:_cat/indices

查看所有索引的基本信息,如健康状态、分片数、文档数、存储大小等。

1
2
GET _cat/indices?v  # 所有索引
GET _cat/indices/my_index?v # 仅查看my_index

输出示例:

1
2
3
health status index      uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green open logs-2024 abc123xyz 3 1 10000 0 500mb 250mb
yellow open users def456uvw 2 1 5000 0 200mb 200mb

关键字段:

  • pri:主分片数;rep:副本数。
  • store.size:总存储大小(含副本);pri.store.size:主分片存储大小。

节点信息:_cat/nodes

查看集群中所有节点的资源使用情况,如内存、CPU、角色等。

1
GET _cat/nodes?v

输出示例:

1
2
3
4
ip            heap.percent ram.percent cpu load_1m load_5m node.role master name
192.168.1.101 45 80 5 0.32 0.25 mdi * node-1
192.168.1.102 30 75 3 0.18 0.20 mdi - node-2
192.168.1.103 25 70 2 0.15 0.17 di - node-3

关键字段:

  • heap.percent:JVM 堆内存使用率;ram.percent:物理内存使用率。
  • node.role:节点角色(m 主节点候选;d 数据节点;i ingest 节点)。
  • master* 表示当前主节点,- 表示非主节点。

分片分布:_cat/shards

查看索引分片的分布情况,包括主 / 副本分片所在节点、状态等。

1
2
GET _cat/shards?v  # 所有分片
GET _cat/shards/logs-2024?v # 仅logs-2024的分片

输出示例:

1
2
3
4
5
index      shard prirep state   docs store ip            node
logs-2024 0 p STARTED 3000 150mb 192.168.1.101 node-1
logs-2024 0 r STARTED 3000 150mb 192.168.1.102 node-2
logs-2024 1 p STARTED 3500 170mb 192.168.1.102 node-2
logs-2024 1 r STARTED 3500 170mb 192.168.1.101 node-1

关键字段:

  • prirepp 主分片;r 副本分片。
  • state:分片状态(STARTED 正常;INITIALIZING 初始化中;UNASSIGNED 未分配)。

文档计数:_cat/count

快速查询集群或指定索引的文档总数。

1
2
GET _cat/count?v  # 集群总文档数
GET _cat/count/users?v # 仅users索引的文档数

输出示例:

1
2
epoch      timestamp count
1690000000 12:30:00 15000 # 总文档数15000

插件信息:_cat/plugins

查看各节点安装的插件列表。

1
GET _cat/plugins?v

输出示例:

1
2
3
4
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

实用参数与技巧

  1. 筛选字段(?h=字段名:只显示需要的字段,减少冗余。

    1
    GET _cat/indices?h=index,health,pri,rep,docs.count  # 只显示索引名、健康状态、主副本数、文档数
  2. 排序(?s=字段:desc/asc:按指定字段排序(如按存储大小降序)。

    1
    GET _cat/indices?v&s=store.size:desc  # 按存储大小降序排列
  3. 精确匹配(/indices/索引名:只查询特定索引(支持通配符)。

    1
    GET _cat/indices/logs-*?v  # 只显示名称以logs-开头的索引
  4. JSON 格式输出(?format=json:适合程序解析。

    1
    GET _cat/health?format=json  # 返回JSON格式的集群健康信息

常用场景示例

  1. 快速检查集群健康

    1
    GET _cat/health?v  # 确认status是否为green
  2. 查看索引存储占用

    1
    GET _cat/indices?v&h=index,store.size&s=store.size:desc  # 按存储大小排序索引
  3. 排查分片未分配问题

    1
    GET _cat/shards?v&h=index,shard,prirep,state,node  # 筛选出state为UNASSIGNED的分片
  4. 监控节点资源负载

    1
    GET _cat/nodes?v&h=name,heap.percent,cpu,load_1m  # 查看节点堆内存、CPU和1分钟负载

欢迎关注我的其它发布渠道