健康 API编辑

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

请求编辑

GET /_health_report

GET /_health_report/<indicator>

先决条件编辑

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

描述编辑

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

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

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

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

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

健康指标对非绿色健康状态执行根本原因分析。当频繁调用时,这可能会占用大量计算资源。设置 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
(字符串)最近活动的 master 节点的节点 ID。
name
(字符串)最近活动的 master 节点的节点名称。
exception_fetching_history

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

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

(可选,数组)如果最近没有选举出主节点,则正在查询的节点会尝试收集有关集群无法形成的原因的信息,或者如果集群已形成,则收集有关正在查询的节点无法加入集群的原因的信息。此数组可以包含每个符合主节点条件的节点对集群形成的看法的任何条目。

cluster_formation 的属性
node_id
(字符串)符合主节点条件的节点的节点 ID
name
(可选,字符串)符合主节点条件的节点的节点名称
cluster_formation_message
(字符串)详细说明集群形成过程中出现的问题,或者如果集群已形成,则说明此节点无法加入集群的原因。

shards_availability编辑

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

磁盘编辑

indices_with_readonly_block
(整数)由于集群空间不足,系统对其强制执行只读索引块(index.blocks.read_only_allow_delete)的索引数。
nodes_with_enough_disk_space
(整数)具有足够可用磁盘空间以正常运行的节点数。
nodes_over_high_watermark
(整数)磁盘空间不足且很可能耗尽空间的节点数。它们的磁盘使用量已达到高水位阈值
nodes_over_flood_stage_watermark
(整数)磁盘空间已耗尽的节点数。它们的磁盘使用量已达到满水位阈值
unknown_nodes
(整数)无法确定其磁盘运行状况的节点数。

存储库完整性编辑

total_repositories
(可选,整数)系统上当前配置的存储库数量。如果没有配置存储库,则省略此详细信息。
corrupted_repositories
(可选,整数)系统上已确定损坏的存储库数量。如果未检测到损坏的存储库,则省略此详细信息。
corrupted
(可选,字符串数组)如果在系统中检测到损坏的存储库,则此字段中最多显示十个存储库的名称。如果未找到损坏的存储库,则省略此详细信息。
unknown_repositories
(可选,整数)至少一个节点确定为未知的存储库数量。如果未检测到未知存储库,则省略此详细信息。
invalid_repositories
(可选,整数)至少一个节点确定为无效的存储库数量。如果未检测到无效存储库,则省略此详细信息。

索引生命周期管理 (ILM)编辑

ilm_status
(字符串)索引生命周期管理功能的当前状态。可以是 STOPPEDSTOPPINGRUNNING
policies
(整数)系统正在管理的索引生命周期策略数量。
stagnating_indices
(整数)由索引生命周期管理管理的索引中,停滞时间超过预期值的索引数量。
stagnating_indices_per_action

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

stagnating_indices_per_action 的属性
downsample
(整数)downsample 操作中停滞的索引数量。
allocate
(整数)allocate 操作中停滞的索引数量。
shrink
(整数)shrink 操作中停滞的索引数量。
searchable_snapshot
(整数)searchable_snapshot 操作中停滞的索引数量。
rollover
(整数)rollver 操作中停滞的索引数量。
forcemerge
(整数)forcemerge 操作中停滞的索引数量。
delete
(整数)delete 操作中停滞的索引数量。
migrate
(整数)migrate 操作中停滞的索引数量。

快照生命周期管理 (SLM)编辑

slm_status
(字符串)快照生命周期管理功能的当前状态。可以是 STOPPEDSTOPPINGRUNNING
policies
(整数)系统正在管理的快照策略数量。
unhealthy_policies
(映射)由于连续多次调用失败而被视为不健康的策略的详细视图。count 键表示不健康策略的数量(整数)。invocations_since_last_success 键将报告一个映射,其中不健康策略名称是键,其对应的失败调用次数是值。

分片容量编辑

data

(映射)包含有关不属于冻结层的数 据节点的分片当前容量信息的视图。

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

(映射)包含有关属于冻结层的数据节点的分片当前容量信息的视图。

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

示例编辑

resp = client.health_report()
print(resp)
response = client.health_report
puts response
GET _health_report

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

resp = client.health_report(
    feature="shards_availability",
)
print(resp)
response = client.health_report(
  feature: 'shards_availability'
)
puts response
GET _health_report/shards_availability

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

resp = client.health_report(
    verbose="false",
)
print(resp)
response = client.health_report(
  verbose: false
)
puts response
GET _health_report?verbose=false

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