cat 健康 API

编辑

cat API 仅适用于使用命令行或 Kibana 控制台的人工使用。它们适用于应用程序使用。对于应用程序使用,请使用集群健康 API

返回集群的健康状态,类似于集群健康 API。

请求

编辑

GET /_cat/health

先决条件

编辑
  • 如果启用了 Elasticsearch 安全功能,则必须拥有monitormanage 集群权限 才能使用此 API。

描述

编辑

您可以使用 cat 健康 API 获取集群的健康状态。

此 API 通常用于检查出现故障的集群。为了帮助您跟踪集群健康状况以及日志文件和警报系统,API 以两种格式返回时间戳

  • HH:MM:SS,它是人类可读的,但不包含日期信息。
  • Unix 纪元时间,它是机器可排序的,并包含日期信息。这对于需要几天才能恢复的集群很有用。

您可以使用 cat 健康 API 跨多个节点验证集群健康状况。请参阅跨节点示例

您还可以使用此 API 跟踪较长时间内大型集群的恢复情况。请参阅大型集群示例

查询参数

编辑
format
(可选,字符串) HTTP 接受标头的简短版本。有效值包括 JSON、YAML 等。
h
(可选,字符串) 要显示的列名列表(逗号分隔)。
help
(可选,布尔值) 如果为true,则响应包含帮助信息。默认为false
s
(可选,字符串) 用于对响应进行排序的列名或列别名列表(逗号分隔)。
time
(可选,时间单位) 用于显示时间值的单位。
ts(时间戳)
(可选,布尔值) 如果为true,则返回HH:MM:SSUnix 纪元 时间戳。默认为true
v
(可选,布尔值) 如果为true,则响应包含列标题。默认为false

示例

编辑

带时间戳的示例

编辑

默认情况下,cat 健康 API 返回HH:MM:SSUnix 纪元 时间戳。例如

resp = client.cat.health(
    v=True,
)
print(resp)
response = client.cat.health(
  v: true
)
puts response
const response = await client.cat.health({
  v: "true",
});
console.log(response);
GET /_cat/health?v=true

API 返回以下响应

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign unassign.pri pending_tasks max_task_wait_time active_shards_percent
1475871424 16:17:04  elasticsearch green           1         1      1   1    0    0        0            0             0                  -                100.0%

不带时间戳的示例

编辑

您可以使用ts(时间戳)参数禁用时间戳。例如

resp = client.cat.health(
    v=True,
    ts=False,
)
print(resp)
response = client.cat.health(
  v: true,
  ts: false
)
puts response
const response = await client.cat.health({
  v: "true",
  ts: "false",
});
console.log(response);
GET /_cat/health?v=true&ts=false

API 返回以下响应

cluster       status node.total node.data shards pri relo init unassign unassign.pri pending_tasks max_task_wait_time active_shards_percent
elasticsearch green           1         1      1   1    0    0        0            0             0                  -                100.0%

注意:如果您的集群包含运行低于 8.16 版本的节点,则报告的未分配主分片的数量可能低于真实值。在这种情况下,要获得更准确的计数,请使用集群健康 API

跨节点示例

编辑

您可以使用 cat 健康 API 验证跨节点的集群健康状况。例如

% pssh -i -h list.of.cluster.hosts curl -s localhost:9200/_cat/health
[1] 20:20:52 [SUCCESS] es3.vm
1384309218 18:20:18 foo green 3 3 3 3 0 0 0 0 0
[2] 20:20:52 [SUCCESS] es1.vm
1384309218 18:20:18 foo green 3 3 3 3 0 0 0 0 0
[3] 20:20:52 [SUCCESS] es2.vm
1384309218 18:20:18 foo green 3 3 3 3 0 0 0 0 0

大型集群示例

编辑

您可以使用 cat 健康 API 跟踪较长时间内大型集群的恢复情况。您可以通过在延迟循环中包含 cat 健康 API 请求来实现此目的。例如

% while true; do curl localhost:9200/_cat/health; sleep 120; done
1384309446 18:24:06 foo red 3 3 20 20 0 0 1812 1121 0
1384309566 18:26:06 foo yellow 3 3 950 916 0 12 870 421 0
1384309686 18:28:06 foo yellow 3 3 1328 916 0 12 492 301 0
1384309806 18:30:06 foo green 3 3 1832 916 4 0 0 0
^C

在此示例中,恢复大约花费了六分钟,从18:24:0618:30:06。如果此恢复花费了数小时,则可以继续监视UNASSIGNED 分片的数量,该数量应下降。如果UNASSIGNED 分片的数量保持不变,则表明集群恢复存在问题。