Jast blog Jast blog
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

Jast-zsh

如果你知道你要去哪里,全世界都会给你让路。
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • ElasticSearch单机版安装
  • ElasticSearch7集群安装
  • ElasticSearch-Head浏览器插件离线安装
  • ElasticSearch-SQL浏览器离线插件安装
  • ElasticSearch快照脚本
  • ELasticSearch监控之Cerebro
  • Elasticsearch-SQL
  • ElasticSearch优化指南
  • ElastiSearch Merger
  • Elasticsearch Pipeline 详解
  • ElasticSearch正确的重启方式
  • ElasticSearch查询模板Mustache
  • ElasticSearch索引模板
  • ElasticSearch集群快照
  • ElasticSearch集群修改密码
  • 深入理解ElasticSearch慢查询日志
  • ElasticSearch Kibana白金级破解
  • ElasticSearch API查看集群状态
    • Elasticsearch 集群健康状态
    • 查看未分配分片和原因
      • 查看所有分片状态 GET /_cat/shards
      • 查看具体分片未分配详细原因 GET /_cluster/allocation/explain
    • 查看节点信息
      • 查看节点信息 _cat/nodes
      • 查看节点详细信息 _nodes/stats
  • ElasticSearch DSL操作
  • ElasticSearch Script操作数据
  • ElasticSearch中副本和分片如何优化?
  • Docker安装ElasticSearchDump备份数据
  • ElasticSearch使用Grafana监控服务状态
  • Grafana配置ElasitcSearch监控-独立部署版本
  • ElasticSearch批量修改报错
  • ElasticSearch数据版本冲突
  • ElasticSearch索引_cat统计数量与_count统计数量不一致
  • Kibana使用Nginx反向代理设置提示404
  • ElasticSearch优化之线程池介绍
  • 当ElasticSearch时间字段设置多个格式到底是用的哪个?
  • 《ElasticSearch教程》笔记
Jast-zsh
2024-04-12
目录

ElasticSearch API查看集群状态

[toc]

# Elasticsearch 集群健康状态

GET /_cluster/health 是 Elasticsearch 集群健康状态的查询 API。这个 API 提供了关于集群健康、节点、分片和索引的概览。执行这个命令,你将得到集群的健康状态,包括其总体状态、数据节点数量、活跃分片数量等关键信息。

命令参数

这个命令可以接受一些参数来定制返回的信息,常见的参数包括:

  • level: 定义返回信息的详细程度,可以是 cluster(默认,返回集群级别的信息)、indices(返回索引级别的信息)、shards(返回分片级别的信息)。shards包含indices/cluster。
  • wait_for_status: 指定等待集群达到特定状态(如 green、yellow 或 red)后才返回结果。
  • wait_for_no_relocating_shards: 等待所有分片迁移完成后才返回结果。
  • wait_for_active_shards: 等待指定数量的活跃分片后返回结果。
  • wait_for_nodes: 等待指定数量的节点加入集群后返回结果。
  • timeout: 指定等待的时长,默认为 30 秒。

返回结果

{
  "cluster_name" : "dev-cluster",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 139,
  "active_shards" : 222,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 10,
  "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" : 95.6896551724138
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

返回结果说明

执行 GET /_cluster/health 命令后,返回的结果是一个 JSON 对象,包含以下字段:

  • status: 集群的整体状态,可以是 green、yellow 或 red。
    • green 表示所有功能正常。
    • yellow 表示所有数据可用,但某些副本尚未分配。
    • red 表示某些数据因某种原因不可用。
  • timed_out: 查询是否超时。
  • number_of_nodes: 集群中的节点数量。
  • number_of_data_nodes: 集群中的数据节点数量。
  • 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: 活跃分片占总分片的比例(以数值形式表示)。 这些信息可以帮助你快速了解集群的当前状态和潜在问题。

# 查看未分配分片和原因

# 查看所有分片状态 GET /_cat/shards

  • 使用 GET /_cat/shards 查看所有分片的状态,找到 UNASSIGNED 状态的分片。

image-20240411133224842

# 查看具体分片未分配详细原因 GET /_cluster/allocation/explain

使用 GET /_cluster/allocation/explain 获取关于分片未分配原因的详细解释。

参数

  • index: 指定要解释的索引名称。取值范围:合法的索引名称。
  • shard: 指定要解释的分片编号。取值范围:整型,合法的分片编号。
  • primary: 指定是否解释主分片(true)或副本分片(false)。取值范围:布尔值。
  • include_yes_decisions: 即使分片已经被分配,也返回解释。默认为 false。取值范围:布尔值。

返回结果

{
  "index" : "test-20231110-2",
  "shard" : 0,
  "primary" : false,
  "current_state" : "unassigned",
  "unassigned_info" : {
    "reason" : "NODE_LEFT",
    "at" : "2024-03-16T21:02:35.220Z",
    "details" : "node_left [Hw6awNn-RCOgA921YGAviw]",
    "last_allocation_status" : "no_attempt"
  },
  "can_allocate" : "no",
  "allocate_explanation" : "cannot allocate because allocation is not permitted to any of the nodes",
  "node_allocation_decisions" : [
    {
      "node_id" : "Hw6awNn-RCOgA921YGAviw",
      "node_name" : "node-3",
      "transport_address" : "172.16.24.200:9300",
      "node_attributes" : {
        "ml.machine_memory" : "67381817344",
        "ml.max_open_jobs" : "512",
        "xpack.installed" : "true",
        "ml.max_jvm_size" : "8389328896",
        "transform.node" : "true"
      },
      "node_decision" : "no",
      "deciders" : [
        {
          "decider" : "same_shard",
          "decision" : "NO",
          "explanation" : "a copy of this shard is already allocated to this node [[test-20231110-2][0], node[Hw6awNn-RCOgA921YGAviw], [R], s[STARTED], a[id=Q2QMaVd4TlSoh7NWkI7uNA]]"
        },
        {
          "decider" : "disk_threshold",
          "decision" : "NO",
          "explanation" : "the node is above the low watermark cluster setting [cluster.routing.allocation.disk.watermark.low=85%], using more disk space than the maximum allowed [85.0%], actual free: [12.00695361391614%]"
        }
      ]
    },
    {
      "node_id" : "OJJMpbG6Qta6ch5Prcpidw",
      "node_name" : "node-2",
      "transport_address" : "172.16.24.201:9300",
      "node_attributes" : {
        "ml.machine_memory" : "67381817344",
        "ml.max_open_jobs" : "512",
        "xpack.installed" : "true",
        "ml.max_jvm_size" : "8389328896",
        "transform.node" : "true"
      },
      "node_decision" : "no",
      "deciders" : [
        {
          "decider" : "same_shard",
          "decision" : "NO",
          "explanation" : "a copy of this shard is already allocated to this node [[test-20231110-2][0], node[OJJMpbG6Qta6ch5Prcpidw], [R], s[STARTED], a[id=l4jEGwz1SDOFMJ7lzo0CYQ]]"
        }
      ]
    },
    {
      "node_id" : "bJxIbe1TR22rEQC5hqhIYQ",
      "node_name" : "node-1",
      "transport_address" : "172.16.24.199:9300",
      "node_attributes" : {
        "ml.machine_memory" : "67381817344",
        "ml.max_open_jobs" : "512",
        "xpack.installed" : "true",
        "ml.max_jvm_size" : "8389328896",
        "transform.node" : "true"
      },
      "node_decision" : "no",
      "deciders" : [
        {
          "decider" : "same_shard",
          "decision" : "NO",
          "explanation" : "a copy of this shard is already allocated to this node [[test-20231110-2][0], node[bJxIbe1TR22rEQC5hqhIYQ], [P], s[STARTED], a[id=vEFW9hwTS2GWuYHnoyt-rw]]"
        }
      ]
    }
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81

返回结果说明

  • index: 解释的索引名称。取值范围:合法的索引名称。

  • shard: 解释的分片编号。取值范围:整型,合法的分片编号。

  • primary: 指示这是否是主分片。取值范围:布尔值。

  • current_state: 分片的当前状态。取值范围:字符串,例如 “unassigned”。

  • unassigned_info: 分片未分配的原因信息。取值范围:对象,包含未分配的具体原因、发生时间戳、最后分配尝试状态等。

    • reason: 未分配的具体原因。取值范围:字符串,例如 “NODE_LEFT”。
    • at: 未分配发生的时间戳。取值范围:日期时间字符串。
    • details: 详细信息,例如 “node_left [Hw6awNn-RCOgA921YGAviw]”。取值范围:字符串。
    • last_allocation_status: 最后一次分配尝试的状态。取值范围:字符串,例如 “no_attempt”。
  • can_allocate: 指示分片是否可以被分配。取值范围:字符串,例如 “no”。

  • allocate_explanation: 分片分配的解释。取值范围:字符串,描述分片分配的可行性。

  • node_allocation_decisions: 包含每个节点的决策列表。取值范围:数组,包含多个对象,每个对象代表一个节点的决策。

    • node_id: 节点的唯一标识符。取值范围:字符串。

    • node_name: 节点的名称。取值范围:字符串。

    • transport_address: 节点的传输地址。取值范围:字符串。

    • node_attributes: 节点的属性列表。取值范围:对象,包含多个键值对。

    • node_decision: 节点是否可以分配分片。取值范围:字符串,例如 “no”。

    • deciders

      : 决策者列表。取值范围:数组,包含多个对象,每个对象代表一个决策者及其决策结果。

      • decider: 决策者的名称。取值范围:字符串。
      • decision: 决策的结果。取值范围:字符串,例如 “NO”。
      • explanation: 决策的解释。取值范围:字符串,描述为什么决策不允许分配。

# 查看节点信息

GET /_nodes/stats 和 GET /_cat/nodes 是 Elasticsearch 中用于获取节点信息的两个不同 API。

  1. GET /_nodes/stats:
    • 返回集群中一个或多个节点的统计信息。
    • 提供关于节点的详细运行状况,包括内存使用、CPU 利用率、磁盘空间、索引状态等。
    • 可以通过指定不同的路径参数和查询参数来自定义返回的信息,例如选择特定的指标或节点 ID。
    • 响应体包含关于选定节点的详细统计信息,包括节点 ID、名称、传输地址、主机、IP 地址、角色、属性、索引统计等。
  2. GET /_cat/nodes:
    • 返回集群中所有节点的信息。
    • 设计用于人类交互,如命令行或 Kibana 控制台。
    • 可以通过 h 参数指定要显示的列。
    • 返回的信息包括节点 IP 地址、堆大小、内存使用情况、文件描述符使用情况、节点角色、主节点状态、节点名称、节点 ID、进程 ID、端口、HTTP 地址、版本、构建哈希、Java 版本等。 主要区别在于:
  • GET /_nodes/stats 提供详细的统计信息,适合自动化和应用程序使用。
  • GET /_cat/nodes 提供简洁的文本输出,适合人类阅读和交互。
  • GET /_nodes/stats 支持更复杂的查询参数和路径参数,可以自定义返回的信息。
  • GET /_cat/nodes 通过 h 参数提供有限的列选择,更适合快速查看节点概览。

# 查看节点信息 _cat/nodes

GET /_cat/nodes?v 是 Elasticsearch 中的一个命令,用于返回集群节点的信息。这个命令是专门为人类使用而设计的,通过命令行或 Kibana 控制台进行交互。它不适用于应用程序使用,而是建议使用 JSON API 来进行应用程序交互。

使用样例

GET /_cat/nodes?h=pid,ip,cpu,heap.max,ram.percent,load_1m,load_5m,load_15m&v
1

结果

pid   ip            cpu heap.max ram.percent load_1m load_5m load_15m
32624 172.16.24.200   5    7.8gb          74    1.14    1.03     1.08
26851 172.16.24.201  12    7.8gb          97    2.68    3.17     3.07
32113 172.16.24.199   7    7.8gb          99    1.41    1.70     2.00
1
2
3
4

该命令的请求参数包括:

  • bytes: (可选) 用于显示字节值的字节大小单位。
  • format: (可选) 指定响应返回的数据格式,如 JSON、YAML 等。
  • full_id: (可选) 如果设置为 true,则返回完整的节点 ID;如果设置为 false,则返回缩写的节点 ID。默认为 false。
  • h: (可选) 逗号分隔的列名称列表,用于指定要显示的列。如果不指定列,API 将返回默认列,按照下面的顺序列出。如果明确指定一个或多个列,则只返回指定的列。 有效的列包括:
    • ip: 节点 IP 地址。
    • heap.percent: 最大配置堆的百分比。
    • heap.max: 总堆大小。
    • ram.percent: 使用的总内存百分比。
    • file_desc.percent: 使用的文件描述符百分比。
    • node.role: 节点的角色。
    • master: 指示节点是否为选举出的主节点。
    • name: 节点名称。
    • id: 节点 ID。
    • pid: 进程 ID。
    • port: 绑定的传输端口。
    • http_address: 绑定的 HTTP 地址。
    • version: Elasticsearch 版本。
    • build: Elasticsearch 构建哈希。
    • jdk: Java 版本。
    • disk.total: 总磁盘空间。
    • disk.used: 已使用的磁盘空间。
    • disk.avail: 可用磁盘空间。
    • disk.used_percent: 已使用磁盘空间的百分比。
    • heap.current: 已使用的堆大小。
    • ram.current: 使用的总内存。
    • ram.max: 总内存。
    • file_desc.current: 使用的文件描述符数量。
    • file_desc.max: 最大文件描述符数量。
    • cpu: 最近系统 CPU 使用百分比。
    • load_1m: 最近一分钟的平均负载。
    • load_5m: 过去五分钟的平均负载。
    • load_15m: 过去十五分钟的平均负载。
    • uptime: 节点运行时间。
    • completion.size: 完成大小。
    • dense_vector.value_count: 索引的密集向量数量。
    • fielddata.memory_size: 使用的字段数据缓存内存。
    • fielddata.evictions: 字段数据缓存驱逐次数。
    • query_cache.memory_size: 使用的查询缓存内存。
    • query_cache.evictions: 查询缓存驱逐次数。
    • query_cache.hit_count: 查询缓存命中次数。
    • query_cache.miss_count: 查询缓存未命中次数。
    • request_cache.memory_size: 使用的请求缓存内存。
    • request_cache.evictions: 请求缓存驱逐次数。
    • request_cache.hit_count: 请求缓存命中次数。
    • request_cache.miss_count: 请求缓存未命中次数。
    • flush.total: 刷新次数。
    • flush.total_time: 花费在刷新上的时间。
    • get.current: 当前的获取操作次数。
    • get.time: 花费在获取上的时间。
    • get.total: 获取操作的总次数。
    • get.exists_time: 成功获取操作花费的时间。
    • get.exists_total: 成功的获取操作总次数。
    • get.missing_time: 失败获取操作花费的时间。
    • get.missing_total: 失败的获取操作总次数。

# 查看节点详细信息 _nodes/stats

GET /_nodes/stats 是 Elasticsearch 中的一个 API,用于获取集群中一个或多个节点的统计信息。这个 API 提供了关于节点的详细运行状况,包括内存使用、CPU 利用率、磁盘空间、索引状态等。

请求方式

  • GET /_nodes/stats: 获取集群中所有节点的统计信息。
  • GET /_nodes/<node_id>/stats: 获取指定节点 ID 的节点的统计信息。
  • GET /_nodes/stats/<metric>: 获取指定指标的统计信息。
  • GET /_nodes/<node_id>/stats/<metric>: 获取指定节点 ID 和指标的统计信息。
  • GET /_nodes/stats/<metric>/<index_metric>: 获取指定指标和索引指标的统计信息。

路径参数

  • <metric>: (可选, string) 限制返回的信息到特定的指标。例如 adaptive_selection, breaker, discovery, fs, http, indexing_pressure, indices, ingest, jvm, os, process, repositories, thread_pool, transport 等。
  • <index_metric>: (可选, string) 当指定 indices 或 all 指标时,可以进一步限制为特定索引指标。例如 bulk, completion, docs, fielddata, flush, get, indexing, mappings, merge, query_cache, recovery, refresh, request_cache, search, segments, shard_stats, store, translog, warmer, dense_vector 等。
  • <node_id>: (可选, string) 逗号分隔的节点 ID 或名称列表,用于限制返回的信息。

查询参数

  • completion_fields, fielddata_fields, fields: (可选) 指定要包括在统计中的字段。
  • groups: (可选) 指定要包括在 search 统计中的搜索组。
  • level: (可选) 指示统计是在集群、索引还是分片级别聚合。
  • types: (可选) 指定 indexing 索引指标的文档类型。
  • master_timeout, timeout: (可选) 指定等待主节点响应或等待响应的时间。
  • include_segment_file_sizes, include_unloaded_segments: (可选) 控制是否包含段文件大小信息或未加载段的信息。

返回结果说明

  • _nodes: 包含根据请求选择的节点统计信息的对象。
    • total: 请求中选择的节点总数。
    • successful: 成功响应请求的节点数量。
    • failed: 拒绝请求或未能响应的节点数量。
    • cluster_name: 集群名称。
    • nodes: 包含选定节点的统计信息的对象。
      • <node_id>: 包含节点统计信息的对象。
        • timestamp: 收集节点统计信息的时间戳。
        • name: 节点的人可读标识符。
        • transport_address: 节点的传输地址。
        • host: 节点的网络主机。
        • ip: 节点的 IP 地址。
        • roles: 分配给节点的角色数组。
        • attributes: 包含节点属性的对象。
        • indices: 包含分配给节点的索引统计信息的对象。
          • docs: 包含分配给节点的所有主分片上的文档统计信息的对象。
          • store: 包含分配给节点的分片大小统计信息的对象。 通过使用不同的参数,你可以自定义输出,以显示你感兴趣的节点统计信息。 参考资料:
上次更新: 2024/04/12, 19:10:20
ElasticSearch Kibana白金级破解
ElasticSearch DSL操作

← ElasticSearch Kibana白金级破解 ElasticSearch DSL操作→

最近更新
01
Linux可视化监控
02-26
02
Maven私服搭建
02-26
03
当ElasticSearch时间字段设置多个格式到底是用的哪个?
01-19
更多文章>
Theme by Vdoing | Copyright © 2016-2025 Jast-zsh | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式