Link Search Menu Expand Document Documentation Menu

集群健康状况

1.0 版引入

最基本的集群健康请求会返回集群健康的简单状态。OpenSearch 用三种颜色表示集群健康:绿色、黄色和红色。绿色状态表示所有主分片及其副本都已分配给节点。黄色状态表示所有主分片都已分配给节点,但部分副本未分配。红色状态表示至少一个主分片未分配给任何节点。

要获取特定索引的状态,请提供索引名称。

端点

GET _cluster/health
GET _cluster/health/<index>

路径参数

下表列出了可用的路径参数。所有路径参数均为可选。

参数 数据类型 描述
<index-name> 字符串 将健康报告限制为特定索引。可以是单个索引或逗号分隔的索引名称列表。

查询参数

下表列出了可用的查询参数。所有查询参数都是可选的。

参数 类型 描述
expand_wildcards 枚举 将通配符表达式扩展为具体索引。多个值用逗号分隔。支持的值包括 allopenclosedhiddennone。默认值为 open
level 枚举 返回的健康信息的详细程度。支持的值包括 clusterindicesshardsawareness_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 枚举 等待直到所有当前排队且具有给定优先级的事件都被处理。支持的值包括 immediateurgenthighnormallowlanguid
wait_for_no_relocating_shards 布尔型 是否等待直到集群中没有正在重新定位的分片。默认值为 false
wait_for_no_initializing_shards 布尔型 是否等待直到集群中没有正在初始化中的分片。默认值为 false
wait_for_status 枚举 等待直到集群健康状态达到或优于指定状态。支持的值包括 greenyellowred
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 字符串 集群健康状态,表示集群中分片分配的状态。可以是 greenyellowred
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

剩余 350 字符

有问题?

想贡献吗?