cat 健康 API
编辑cat 健康 API
编辑cat API 仅供使用命令行或 Kibana 控制台的人员使用。它们不适合应用程序使用。对于应用程序使用,请使用集群健康 API。
返回集群的健康状态,类似于集群健康 API。
请求
编辑GET /_cat/health
描述
编辑您可以使用 cat 健康 API 获取集群的健康状态。
此 API 通常用于检查故障集群。为了帮助您跟踪日志文件和警报系统中的集群健康状况,该 API 返回两种格式的时间戳:
-
HH:MM:SS
,这是人类可读的,但不包含日期信息。 -
Unix
epoch
时间,这是机器可排序的,并包含日期信息。这对于需要多天的集群恢复非常有用。
您可以使用 cat 健康 API 验证跨多个节点的集群健康状况。请参阅跨节点的示例。
您还可以使用该 API 跟踪长时间内大型集群的恢复情况。请参阅大型集群示例。
查询参数
编辑-
format
- (可选,字符串) HTTP accept header 的简短版本。有效值包括 JSON、YAML 等。
-
h
- (可选,字符串) 要显示的列名称的逗号分隔列表。
-
help
- (可选,布尔值) 如果为
true
,则响应包含帮助信息。默认为false
。 -
s
- (可选,字符串) 用于对响应进行排序的列名称或列别名的逗号分隔列表。
-
time
- (可选,时间单位) 用于显示时间值的单位。
-
ts
(时间戳) - (可选,布尔值) 如果为
true
,则返回HH:MM:SS
和 Unixepoch
时间戳。默认为true
。 -
v
- (可选,布尔值) 如果为
true
,则响应包含列标题。默认为false
。
示例
编辑带时间戳的示例
编辑默认情况下,cat 健康 API 返回 HH:MM:SS
和 Unix epoch
时间戳。例如:
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:06
到 18:30:06
。如果此恢复花费了数小时,您可以继续监视 UNASSIGNED
分片的数量,该数量应该会减少。如果 UNASSIGNED
分片的数量保持不变,则表明集群恢复存在问题。