0%

elasticsearch系统状态查询

Elasticsearch 系统状态查询:使用 Cat APIs 监控集群

Elasticsearch 提供了一系列 cat APIs(基于 HTTP 的 REST 接口),以简洁的文本格式展示集群、索引、节点等核心组件的状态信息,便于开发者和运维人员快速监控系统运行情况。这些 API 输出格式直观(类似命令行工具),支持通过参数筛选和格式化输出。

Cat APIs 核心特点

  • 轻量高效:返回纯文本或表格格式,数据量小,适合快速查看。
  • 易于解析:支持 v 参数显示表头,h 参数筛选字段,便于脚本处理。
  • 覆盖全面:涵盖集群健康、节点状态、索引信息、分片分配等核心指标。

常用 Cat APIs 详解

集群健康状态:_cat/health

展示集群的整体健康状态(绿色 / 黄色 / 红色)、节点数量、分片状态等。

1
GET _cat/health?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: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 负载、角色等。

1
GET _cat/nodes?v

输出示例:

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

展示所有索引的基本信息,包括文档数、存储大小、健康状态等。

1
GET _cat/indices?v

输出示例:

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

展示各节点的分片分配情况及磁盘使用量。

1
GET _cat/allocation?v

输出示例:

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

展示已创建的索引模板信息(模板用于自动配置新索引的映射和设置)。

1
GET _cat/templates?v

输出示例:

1
2
3
name       index_patterns order version
product_tpl [product-*] 10 7
user_tpl [user-*] 5 7

字段说明:

  • index_patterns:模板匹配的索引名称模式。
  • order:模板优先级(数值越大,优先级越高,冲突时覆盖)。

插件信息:_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

快照与仓库:_cat/snapshots_cat/repositories

  • _cat/repositories:展示注册的快照仓库(用于备份数据)。

    1
    GET _cat/repositories?v

    输出:id type; repo1 fs; repo2 s3fs 表示本地文件系统,s3 表示 AWS S3)。

  • _cat/snapshots/repo1?v:展示指定仓库(如 repo1)中的快照信息。

线程池状态:_cat/thread_pool

展示各节点线程池的运行状态(如活跃线程数、队列大小),用于诊断性能瓶颈。

1
GET _cat/thread_pool?v

输出示例(截取部分):

1
2
3
4
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:被拒绝的任务数(队列满时发生,需关注)。

实用参数与技巧

  1. 筛选字段(h 参数):只显示需要的字段,减少输出冗余。

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

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

    1
    GET _cat/indices/product*?v  # 只显示名称以product开头的索引
  4. 格式化输出(format 参数):支持 json 格式输出,便于程序解析。

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

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

表情 | 预览
Powered By Valine
v1.3.10