集群健康状况
1.0 版引入
最基本的集群健康请求会返回集群健康的简单状态。OpenSearch 用三种颜色表示集群健康:绿色、黄色和红色。绿色状态表示所有主分片及其副本都已分配给节点。黄色状态表示所有主分片都已分配给节点,但部分副本未分配。红色状态表示至少一个主分片未分配给任何节点。
要获取特定索引的状态,请提供索引名称。
端点
GET _cluster/health
GET _cluster/health/<index>
路径参数
下表列出了可用的路径参数。所有路径参数均为可选。
参数 | 数据类型 | 描述 |
---|---|---|
<index-name> | 字符串 | 将健康报告限制为特定索引。可以是单个索引或逗号分隔的索引名称列表。 |
查询参数
下表列出了可用的查询参数。所有查询参数都是可选的。
参数 | 类型 | 描述 |
---|---|---|
expand_wildcards | 枚举 | 将通配符表达式扩展为具体索引。多个值用逗号分隔。支持的值包括 all 、open 、closed 、hidden 和 none 。默认值为 open 。 |
level | 枚举 | 返回的健康信息的详细程度。支持的值包括 cluster 、indices 、shards 和 awareness_attributes 。默认值为 cluster 。 |
awareness_attribute | 字符串 | 要返回集群健康状况的感知属性名称(例如,zone )。仅当 level 设置为 awareness_attributes 时适用。 |
local | 布尔型 | 是否仅返回本地节点的信息,而不是集群管理器节点的信息。默认值为 false 。 |
cluster_manager_timeout | 时间 | 等待连接到集群管理器节点的时间。默认值为 30 秒。 |
timeout | 时间 | 等待响应的时间。如果超时,请求将失败。默认值为 30 秒。 |
wait_for_active_shards | 字符串 | 等待直到指定数量的分片激活后再返回响应。all 表示所有分片。默认值为 0 。 |
wait_for_nodes | 字符串 | 等待 N 个节点。12 表示精确匹配,>12 和 <12 表示范围。 |
wait_for_events | 枚举 | 等待直到所有当前排队且具有给定优先级的事件都被处理。支持的值包括 immediate 、urgent 、high 、normal 、low 和 languid 。 |
wait_for_no_relocating_shards | 布尔型 | 是否等待直到集群中没有正在重新定位的分片。默认值为 false 。 |
wait_for_no_initializing_shards | 布尔型 | 是否等待直到集群中没有正在初始化中的分片。默认值为 false 。 |
wait_for_status | 枚举 | 等待直到集群健康状态达到或优于指定状态。支持的值包括 green 、yellow 和 red 。 |
weights | JSON 对象 | 在 PUT 请求的正文中为属性分配权重。权重可以按任意比例设置,例如 2:3:5。在三个区域的 2:3:5 比例中,对于发送到集群的每 100 个请求,每个区域将随机接收 20、30 或 50 个搜索请求。当权重设置为 0 时,该区域不会接收任何搜索流量。 |
示例请求
以下示例展示了如何使用集群健康 API。
此请求等待 50 秒,直到集群达到黄色或更优状态
GET _cluster/health?wait_for_status=yellow&timeout=50s
如果集群健康状况在 50 秒内变为黄色或绿色,它会立即返回响应。否则,它会在超过超时时间后立即返回响应。
以下示例请求检索集群中所有索引的集群健康状况
GET _cluster/health
示例响应
响应包含集群健康信息
{
"cluster_name" : "opensearch-cluster",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 2,
"number_of_data_nodes" : 2,
"discovered_master" : true,
"active_primary_shards" : 6,
"active_shards" : 12,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_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" : 100.0
}
响应正文字段
下表列出了所有响应字段。
字段 | 数据类型 | 描述 |
---|---|---|
集群名称 | 字符串 | 集群的名称。 |
status | 字符串 | 集群健康状态,表示集群中分片分配的状态。可以是 green 、yellow 或 red 。 |
number_of_nodes | 整数 | 集群中的节点数量。 |
number_of_data_nodes | 整数 | 集群中的数据节点数量。 |
discovered_cluster_manager | 布尔型 | 指定是否发现集群管理器。 |
active_primary_shards | 整数 | 活跃主分片的数量。 |
active_shards | 整数 | 活跃分片的总数,包括主分片和副本分片。 |
relocating_shards | 整数 | 正在重新定位的分片数量。 |
initializing_shards | 整数 | 正在初始化中的分片数量。 |
unassigned_shards | 整数 | 未分配分片的数量。 |
delayed_unassigned_shards | 整数 | 延迟未分配分片的数量。 |
number_of_pending_tasks | 整数 | 集群中待处理任务的数量。 |
number_of_in_flight_fetch | 整数 | 未完成获取的数量。 |
task_max_waiting_in_queue_millis | 整数 | 所有等待执行的任务的最大等待时间,以毫秒为单位。 |
active_shards_percent_as_number | 双精度浮点数 | 集群中活跃分片的百分比。 |
awareness_attributes | 对象 | 包含每个感知属性的集群健康信息。 |
按感知属性返回集群健康状况
要按感知属性(例如,zone 或 rack)检查集群健康状况,请在 level
查询参数中指定 awareness_attributes
GET _cluster/health?level=awareness_attributes
响应包含按感知属性划分的集群健康指标
{
"cluster_name": "runTask",
"status": "green",
"timed_out": false,
"number_of_nodes": 3,
"number_of_data_nodes": 3,
"discovered_master": true,
"discovered_cluster_manager": true,
"active_primary_shards": 0,
"active_shards": 0,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_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": 100,
"awareness_attributes": {
"zone": {
"zone-3": {
"active_shards": 0,
"initializing_shards": 0,
"relocating_shards": 0,
"unassigned_shards": 0,
"data_nodes": 1,
"weight": 1
},
"zone-1": {
"active_shards": 0,
"initializing_shards": 0,
"relocating_shards": 0,
"unassigned_shards": 0,
"data_nodes": 1,
"weight": 1
},
"zone-2": {
"active_shards": 0,
"initializing_shards": 0,
"relocating_shards": 0,
"unassigned_shards": 0,
"data_nodes": 1,
"weight": 1
}
},
"rack": {
"rack-3": {
"active_shards": 0,
"initializing_shards": 0,
"relocating_shards": 0,
"unassigned_shards": 0,
"data_nodes": 1,
"weight": 1
},
"rack-1": {
"active_shards": 0,
"initializing_shards": 0,
"relocating_shards": 0,
"unassigned_shards": 0,
"data_nodes": 1,
"weight": 1
},
"rack-2": {
"active_shards": 0,
"initializing_shards": 0,
"relocating_shards": 0,
"unassigned_shards": 0,
"data_nodes": 1,
"weight": 1
}
}
}
}
如果您对某个特定的感知属性感兴趣,可以将其名称作为查询参数包含在内
GET _cluster/health?level=awareness_attributes&awareness_attribute=zone
响应上述请求时,OpenSearch 仅返回 zone
感知属性的集群健康信息。
只有在集群启动之前或集群启动后但任何索引请求之前,您启用了副本计数强制执行并为感知属性配置了强制感知,未分配的分片信息才是准确的。如果在集群接收到索引请求后启用副本强制执行,则未分配的分片信息可能不准确。如果您未配置副本计数强制执行和强制感知,则 unassigned_shards
字段将包含 -1。
所需权限
如果您使用 Security 插件,请确保您拥有适当的权限:cluster:monitor/health
。