健康 API

编辑

一个报告 Elasticsearch 集群健康状态的 API。

请求

编辑

GET /_health_report

GET /_health_report/<indicator>

先决条件

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

描述

编辑

健康 API 返回一份包含 Elasticsearch 集群健康状态的报告。该报告包含构成 Elasticsearch 功能的一系列指标。

每个指标的健康状态为:greenunknownyellowred。该指标将提供说明和元数据,描述其当前健康状态的原因。

集群的状态由最差的指标状态控制。

如果指标的状态非绿色,则指标结果中可能会存在一系列影响,详细说明健康问题对功能的负面影响。每个影响都带有严重级别、受影响的系统区域以及对系统影响的简单描述。

某些健康指标可以确定健康问题的根本原因,并规定可以执行的一系列步骤来改善系统的健康状况。根本原因和修复步骤封装在 diagnosis 中。诊断包含详细说明根本原因分析的 cause、包含修复问题步骤的简要描述的 action、受影响资源列表(如果适用)以及修复已诊断问题的详细分步故障排除指南。

健康指标执行对非绿色健康状态的根本原因分析。当频繁调用时,这在计算上可能代价很高。在设置 API 健康状态的自动轮询时,将 verbose 设置为 false 以禁用更昂贵的分析逻辑。

路径参数

编辑
<indicator>

(可选,字符串) 将返回的信息限制到特定指标。支持的指标为

master_is_stable
报告有关处理健康请求的节点视为主节点的节点稳定性的健康问题。如果在短时间内观察到足够的主节点更改,则此指标将旨在诊断和报告有关其检测到的集群形成问题的有用信息。
shards_availability
报告有关分片分配的健康问题。
disk
报告由磁盘空间不足引起的健康问题。
ilm
报告与索引生命周期管理相关的健康问题。
repository_integrity
跟踪存储库完整性,并报告如果存储库损坏、未知或无效而产生的健康问题。
slm
报告与快照生命周期管理相关的健康问题。
shards_capacity
报告与集群分片容量相关的健康问题。

查询参数

编辑
verbose
(可选,布尔值) 如果为 true,则响应包含有助于解释每个非绿色指标状态的其他详细信息。这些详细信息包括其他故障排除指标,有时还包括健康状态的根本原因分析。默认为 true
size
(可选,整数) 要返回的受影响资源的最大数量。由于诊断可以返回多种类型的受影响资源,因此此参数会将每种类型的返回资源数量限制为配置的值(例如,诊断可以返回 1000 个受影响的索引和 1000 个受影响的节点)。默认为 1000

响应主体

编辑
cluster_name
(字符串) 集群的名称。
status

(可选,字符串) 集群的健康状态,基于集群中所有指标的聚合状态。如果正在请求特定指标的健康状况,则将省略此顶级状态。状态为

green
集群健康。
unknown
无法确定集群的健康状况。
yellow
集群的功能处于降级状态,可能需要进行修复以避免健康状况变为 red
red
集群正在发生中断或某些功能不可用。
indicators

(对象) 关于集群指标健康状况的信息。

indicators 的属性
<indicator>

(对象) 包含指标的健康结果。

<indicator> 的属性
status

(字符串) 指标的健康状态。状态为

green
指标健康。
unknown
无法确定指标的健康状况。
yellow
指标的功能处于降级状态,可能需要进行修复以避免健康状况变为 red
red
指标正在发生中断或某些功能不可用。
symptom
(字符串) 提供有关当前健康状态的信息的消息。
details
(可选,对象) 一个对象,其中包含有关导致当前健康状态结果的集群的其他信息。此数据是非结构化的,每个指标都会返回 一组唯一的详细信息。如果 verbose 属性设置为 false,则不会计算详细信息。
impacts

(可选,数组) 如果返回非健康状态,则指标可能包含此健康状态对集群的影响列表。

impacts 的属性
severity
(整数) 此影响对集群功能的重要性。值为 1 严重性最高,较大的值表示严重性较低。
description
(字符串) 对集群影响的描述。
impact_areas

(字符串数组) 此影响影响的集群功能区域。可能的值为

  • search
  • ingest
  • backup
  • deployment_management
diagnosis

(可选,数组) 如果返回非健康状态,则指标可能包含封装健康问题原因和为解决问题而采取的操作的诊断列表。如果 verbose 属性为 false,则不会计算诊断。

diagnosis 的属性
cause
(字符串) 此健康问题的根本原因的描述。
action
(字符串) 对应采取的修复问题的步骤的简要描述。更详细的分步指南可在 help_url 字段中找到。
affected_resources
(可选,对象) 一个对象,其中键表示资源类型(例如,索引、分片),值是受问题影响的特定资源列表。
help_url
(字符串) 修复健康问题的故障排除指南的链接。

指标详细信息

编辑

健康 API 中的每个健康指标都会返回一组详细信息,以进一步解释系统的状态。详细信息的内容和结构对于每个指标都是唯一的。

master_is_stable

编辑
current_master

(对象) 有关当前选出的主节点的信息。

current_master 的属性
node_id
(字符串) 当前选出的主节点的节点 ID,如果未选举主节点,则为 null。
name
(字符串) 当前选出的主节点的节点名称,如果未选举主节点,则为 null。
recent_masters

(可选,数组) 最近时间窗口内被选举或替换为主节点的节点列表。如果主节点更改速度快到足以导致问题,则存在此字段,并且在指标为 green 时也作为附加信息存在。此数组仅包含已选举的主节点,并且 *不* 包含在没有已选举主节点的期间的空条目。

recent_masters 的属性
node_id
(字符串) 最近活跃的主节点的节点 ID。
name
(字符串) 最近活跃的主节点的节点名称。
exception_fetching_history

(可选,对象) 如果被查询的节点发现选出的主节点反复退位,则会从最近选举的主节点请求主节点历史记录以进行诊断。如果获取此远程历史记录失败,则异常信息将在此详细信息字段中返回。

exception_fetching_history 的属性
message
(字符串) 失败的历史记录获取操作的异常消息。
stack_trace
(字符串) 失败的历史记录获取操作的堆栈跟踪。
cluster_formation

(可选,数组) 如果最近没有选举主节点,则被查询的节点尝试收集有关集群无法形成的原因或如果集群已形成则被查询的节点无法加入集群的原因的信息。此数组可能包含每个主节点合格节点对集群形成的视图的任何条目。

cluster_formation 的属性
node_id
(字符串) 主节点合格节点的节点 ID
name
(可选,字符串) 主节点合格节点的节点名称
cluster_formation_message
(字符串) 解释集群形成过程中出现什么错误或如果集群已形成则此节点为何无法加入集群的详细描述。

shards_availability

编辑
unassigned_primaries
(int) 由于初始化或重新定位以外的原因而未分配的主分片的数量。
initializing_primaries
(int) 正在初始化或恢复的主分片的数量。
creating_primaries
(int) 由于最近创建而未分配的主分片的数量。
creating_replicas
(int) 由于最近创建而未分配的副本分片的数量。
restarting_primaries
(int) 由于节点关闭操作而正在重新分配的主分片数量。
started_primaries
(int) 系统上处于活动状态且可用的主分片数量。
unassigned_replicas
(int) 由于初始化或重新分配以外的原因而未分配的副本分片数量。
initializing_replicas
(int) 正在初始化或恢复的副本分片数量。
restarting_replicas
(int) 由于节点关闭操作而正在重新分配的副本分片数量。
started_replicas
(int) 系统上处于活动状态且可用的副本分片数量。

disk

编辑
indices_with_readonly_block
(int) 系统由于空间不足而对索引强制实施只读索引块(index.blocks.read_only_allow_delete) 的索引数量。
nodes_with_enough_disk_space
(int) 具有足够可用磁盘空间以正常运行的节点数量。
nodes_over_high_watermark
(int) 磁盘空间不足且可能耗尽的节点数量。它们的磁盘使用量已超过高水位阈值
nodes_over_flood_stage_watermark
(int) 磁盘已耗尽的节点数量。它们的磁盘使用量已超过洪水阶段水位阈值
unknown_nodes
(int) 无法确定其磁盘健康状况的节点数量。

repository_integrity

编辑
total_repositories
(可选,int) 系统上当前配置的存储库数量。如果未配置任何存储库,则省略此详细信息。
corrupted_repositories
(可选,int) 系统上已确定已损坏的存储库数量。如果未检测到任何损坏的存储库,则省略此详细信息。
corrupted
(可选,字符串数组) 如果在系统中检测到损坏的存储库,则此字段中将显示最多十个存储库的名称。如果未找到损坏的存储库,则省略此详细信息。
unknown_repositories
(可选,int) 已被至少一个节点确定为未知的存储库数量。如果未检测到任何未知的存储库,则省略此详细信息。
invalid_repositories
(可选,int) 已被至少一个节点确定为无效的存储库数量。如果未检测到任何无效的存储库,则省略此详细信息。
ilm_status
(string) 索引生命周期管理功能的当前状态。可以是 STOPPEDSTOPPINGRUNNING
policies
(int) 系统正在管理的索引生命周期策略数量。
stagnating_indices
(int) 由索引生命周期管理管理的索引数量,其停滞时间超过预期。
stagnating_indices_per_action

(可选,map) 按操作分组的停滞时间超过预期的索引数量的摘要。

stagnating_indices_per_action 的属性
downsample
(int) downsample 操作中停滞索引的数量。
allocate
(int) allocate 操作中停滞索引的数量。
shrink
(int) shrink 操作中停滞索引的数量。
searchable_snapshot
(int) searchable_snapshot 操作中停滞索引的数量。
rollover
(int) rollver 操作中停滞索引的数量。
forcemerge
(int) forcemerge 操作中停滞索引的数量。
delete
(int) delete 操作中停滞索引的数量。
migrate
(int) migrate 操作中停滞索引的数量。
slm_status
(string) 快照生命周期管理功能的当前状态。可以是 STOPPEDSTOPPINGRUNNING
policies
(int) 系统正在管理的快照策略数量。
unhealthy_policies
(map) 由于连续多次调用失败而被认为不健康的策略的详细视图。count 键表示不健康策略的数量(int)。invocations_since_last_success 键将报告一个映射,其中不健康策略名称为键,其对应的失败调用次数为值。

shards_capacity

编辑
data

(map) 显示不属于冻结层的数据节点的当前分片容量信息。

data 的属性
max_shards_in_cluster
(int) 指示集群可以容纳的最大分片数量。
current_used_shards
(可选,int) 集群持有的分片总数。仅在指标状态为 redyellow 时显示。
frozen

(map) 显示属于冻结层的数据节点的当前分片容量信息。

frozen 的属性
max_shards_in_cluster
(int) 指示集群可以为部分挂载的索引容纳的最大分片数量。
current_used_shards
(可选,int) 部分挂载的索引在集群中拥有的分片总数。仅在指标状态为 redyellow 时显示。

示例

编辑
resp = client.health_report()
print(resp)
response = client.health_report
puts response
const response = await client.healthReport();
console.log(response);
GET _health_report

API 返回包含所有指标的响应,无论其当前状态如何。

resp = client.health_report(
    feature="shards_availability",
)
print(resp)
response = client.health_report(
  feature: 'shards_availability'
)
puts response
const response = await client.healthReport({
  feature: "shards_availability",
});
console.log(response);
GET _health_report/shards_availability

API 仅返回分片可用性指标的响应。

resp = client.health_report(
    verbose=False,
)
print(resp)
response = client.health_report(
  verbose: false
)
puts response
const response = await client.healthReport({
  verbose: "false",
});
console.log(response);
GET _health_report?verbose=false

API 返回包含所有健康指标的响应,但不会计算响应的详细信息或根本原因分析。如果您想监控健康 API 并且不希望每次调用都计算额外的故障排除详细信息的开销,这将很有帮助。