健康 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
报告关于处理健康请求的节点所看到的 master 节点的稳定性方面的健康问题。如果在短时间内观察到足够的 master 更改,此指标将旨在诊断并报告有关其检测到的集群形成问题的有用信息。
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

(对象)有关当前选举的 master 的信息。

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

(可选,数组)最近一段时间内被选举为 master 或被替换为 master 的节点列表。如果 master 更改的速度足够快以至于导致问题,则此字段会显示;当指标为 green 时,也会作为附加信息显示。此数组仅包括选举的 master,并且包括没有选举 master 的时段的空条目。

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

(可选,对象)如果被查询的节点看到选举的 master 已多次降级,则会从最近选举的 master 节点请求 master 历史记录以进行诊断。如果获取此远程历史记录失败,则异常信息将在此详细信息字段中返回。

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

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

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

shards_availability

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

磁盘

编辑
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) 无法确定其磁盘健康状况的节点数量。

存储库完整性

编辑
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 键将报告一个映射,其中不健康策略的名称是键,其对应的失败调用次数是值。

分片容量

编辑
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,并且不希望每次调用都计算额外的故障排除详细信息,这将很有帮助。