集群健康 API
编辑集群健康 API
编辑返回集群的健康状态。
请求
编辑GET /_cluster/health/<目标>
描述
编辑集群健康 API 返回集群的简单健康状态。您还可以使用 API 仅获取指定数据流和索引的健康状态。对于数据流,API 会检索流的后备索引的健康状态。
集群健康状态为:green
、yellow
或 red
。在分片级别,red
状态表示特定分片未在集群中分配,yellow
表示主分片已分配但副本未分配,green
表示所有分片都已分配。索引级别状态由最差分片状态控制。集群状态由最差索引状态控制。
该 API 的主要优点之一是能够等待直到集群达到某个高水位健康级别。例如,以下内容将等待 50 秒,直到集群达到 yellow
级别(如果它在 50 秒过去之前达到 green
或 yellow
状态,它将在此点返回)
$response = $client->cluster()->health();
resp = client.cluster.health( wait_for_status="yellow", timeout="50s", ) print(resp)
response = client.cluster.health( wait_for_status: 'yellow', timeout: '50s' ) puts response
res, err := es.Cluster.Health( es.Cluster.Health.WithTimeout(time.Duration(50000000000)), es.Cluster.Health.WithWaitForStatus("yellow"), ) fmt.Println(res, err)
const response = await client.cluster.health({ wait_for_status: "yellow", timeout: "50s", }); console.log(response);
GET /_cluster/health?wait_for_status=yellow&timeout=50s
路径参数
编辑-
<目标>
-
(可选,字符串) 以逗号分隔的数据流、索引和索引别名列表,用于限制请求。支持通配符表达式 (
*
)。要定位集群中的所有数据流和索引,请省略此参数或使用
_all
或*
。
查询参数
编辑-
level
- (可选,字符串) 可以是
cluster
、indices
或shards
之一。控制返回的健康信息的详细级别。默认为cluster
。 -
local
- (可选,布尔值) 如果为
true
,则请求仅从本地节点检索信息。默认为false
,这意味着信息是从主节点检索的。 -
master_timeout
- (可选,时间单位) 等待主节点的时间段。如果主节点在超时过期之前不可用,则请求失败并返回错误。默认为
30s
。也可以设置为-1
以表示请求永不超时。 -
timeout
- (可选,时间单位) 在更新集群元数据后,等待来自集群中所有相关节点的响应的时间段。如果在超时过期之前没有收到响应,则集群元数据更新仍然适用,但响应将指示它未完全确认。默认为
30s
。也可以设置为-1
以表示请求永不超时。 -
wait_for_active_shards
- (可选,字符串) 一个控制要等待多少活动分片的数字,
all
表示等待集群中的所有分片都处于活动状态,或者0
表示不等待。默认为0
。 -
wait_for_events
- (可选,字符串) 可以是
immediate
、urgent
、high
、normal
、low
、languid
之一。等待直到所有当前排队的具有给定优先级的事件都被处理。 -
wait_for_no_initializing_shards
- (可选,布尔值) 一个布尔值,控制是否等待(直到提供的超时时间)集群没有分片初始化。默认为 false,这意味着它不会等待初始化分片。
-
wait_for_no_relocating_shards
- (可选,布尔值) 一个布尔值,控制是否等待(直到提供的超时时间)集群没有分片重新定位。默认为 false,这意味着它不会等待重新定位分片。
-
wait_for_nodes
- (可选,字符串) 请求等待直到指定数量
N
的节点可用。它也接受>=N
、<=N
、>N
和<N
。或者,可以使用ge(N)
、le(N)
、gt(N)
和lt(N)
表示法。 -
wait_for_status
- (可选,字符串)
green
、yellow
或red
之一。将等待(直到提供的超时时间)直到集群的状态更改为提供的状态或更好,即green
>yellow
>red
。默认情况下,不会等待任何状态。
响应正文
编辑-
cluster_name
- (字符串) 集群的名称。
-
status
-
(字符串) 集群的健康状态,基于其主分片和副本分片的状态。状态是
-
green
:所有分片都已分配。 -
yellow
:所有主分片都已分配,但一个或多个副本分片未分配。如果集群中的节点发生故障,某些数据可能会在修复该节点之前不可用。 -
red
:一个或多个主分片未分配,因此某些数据不可用。这可能会在集群启动期间短暂发生,因为主分片已分配。
-
-
timed_out
- (布尔值) 如果为
false
,则响应在由timeout
参数指定的时间段内返回(默认为30s
)。 -
number_of_nodes
- (整数) 集群中的节点数。
-
number_of_data_nodes
- (整数) 专用数据节点的数量。
-
active_primary_shards
- (整数) 活动主分片的数量。
-
active_shards
- (整数) 活动主分片和副本分片的总数。
-
relocating_shards
- (整数) 正在重新定位的分片数。
-
initializing_shards
- (整数) 正在初始化的分片数。
-
unassigned_shards
- (整数) 未分配的分片数。
-
unassigned_primary_shards
- (整数) 未分配的主分片数量。 注意:如果您的集群包含运行低于 8.16 版本的节点,则此数字可能低于真实值。为了在这种情况下获得更准确的计数,请使用集群健康 API。
-
delayed_unassigned_shards
- (整数) 由于超时设置而延迟分配的分片数。
-
number_of_pending_tasks
- (整数) 尚未执行的集群级更改的数量。
-
number_of_in_flight_fetch
- (整数) 未完成的获取数。
-
task_max_waiting_in_queue_millis
- (整数) 自最早启动的任务等待执行以来所经过的时间(以毫秒为单位)。
-
active_shards_percent_as_number
- (浮点数) 集群中活动分片的比例,表示为百分比。
示例
编辑$response = $client->cluster()->health();
resp = client.cluster.health() print(resp)
response = client.cluster.health puts response
res, err := es.Cluster.Health() fmt.Println(res, err)
const response = await client.cluster.health(); console.log(response);
GET _cluster/health
在安静的单节点集群(具有一个分片和一个副本的单个索引)的情况下,API 返回以下响应
{ "cluster_name" : "testcluster", "status" : "yellow", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 1, "active_shards" : 1, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 1, "unassigned_primary_shards" : 0, "delayed_unassigned_shards": 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch": 0, "task_max_waiting_in_queue_millis": 0, "active_shards_percent_as_number": 50.0 }
以下是在 shards
级别获取集群健康状况的示例
resp = client.cluster.health( index="my-index-000001", level="shards", ) print(resp)
response = client.cluster.health( index: 'my-index-000001', level: 'shards' ) puts response
const response = await client.cluster.health({ index: "my-index-000001", level: "shards", }); console.log(response);
GET /_cluster/health/my-index-000001?level=shards