当前位置: 首页 > news >正文

文章七:ElasticSearch 集群监控指标

ElasticSearch自带监控指标:

字段名称核心含义截图示例值
NameElasticsearch 节点的唯一标识名称,同时显示该节点的 Transport 通信地址与端口(默认 9300 端口,用于集群内节点间通信);带★标记表示该节点是当前集群的主节点(Master Node)node-1(192.168.0.190:9300)
Alerts该节点的告警状态,用于标识节点是否触发了监控系统预设的告警规则Clear(无告警,状态正常)
Status该节点的运行状态,标识节点是否正常接入集群、是否可正常提供服务Online(节点在线,正常运行)
Shards该节点当前承载的分片总数,包含主分片(Primary Shards)和副本分片(Replica Shards),是衡量节点数据负载的核心指标之一18
CPU Usage该节点的 CPU 使用率百分比,反映节点的计算资源负载情况;箭头↑表示数值较上一监控周期呈上升趋势1%(上升趋势)
Load Average该节点的系统平均负载,通常指 1 分钟内的 CPU 等待队列平均长度,是衡量系统整体繁忙程度的核心指标;箭头↑表示数值较上一监控周期呈上升趋势0.02(上升趋势)
JVM Heap该节点 Elasticsearch 进程的 JVM 堆内存使用率百分比,反映节点的内存资源占用情况;箭头↑表示数值较上一监控周期呈上升趋势31%(上升趋势)
Disk Free Space该节点数据存储目录的剩余可用磁盘空间;箭头↓表示数值较上一监控周期呈下降趋势(磁盘空间被数据占用)9.9 GB(下降趋势)

Elasticsearch 节点的参考阈值(按 CPU 核心数)

以节点的 CPU 核心数为基准,分档判断:

表格

状态1 分钟 Load Average 阈值说明
✅ 健康≤ CPU 核心数的 0.7 倍系统负载低,资源充足,无性能压力
⚠️ 预警CPU 核心数的 0.7 ~ 1 倍负载开始升高,CPU 接近饱和,需关注趋势
❌ 异常≥ CPU 核心数的 1 ~ 2 倍CPU 已经被完全打满,任务排队,可能出现查询超时、写入延迟
🚨 严重≥ CPU 核心数的 2 倍以上系统负载极高,可能导致节点假死、集群不稳定

举个例子:

  • 你的节点如果是4 核 CPU
    • 正常:Load ≤ 2.8
    • 预警:2.8 ~ 4
    • 异常:≥ 4
  • 你的截图里Load Average = 0.02,无论节点是几核(哪怕是 1 核),都属于极低负载,完全正常

节点管理:

集群横向扩容实战:
禁用集群自动平衡,因为我们添加新的节点时,他会自动的将分片进行平衡,但是如果我们的节点启动失败,就会造成问题。还有就是假设我们增加多个节点的话,每个节点的加入都会让他进行一次资源的平衡,这个也占用es的资源。

PUT _cluster/settings { "persistent": { "cluster": { "routing": { "rebalance.enable":"none" } } } }


参数含义:让 Elasticsearch 自动把分片均匀分配到所有节点上,不让某个节点压力太大。
一键获取完整项目代码

新增节点全部部署之后,重新开启

节点下线:

将需要下线的节点执行下面的命令,之后这个节点上的分片就会被分配到其他的节点上。

PUT _cluster/settings { "persistent": { "cluster.routing.allocation.exclude._ip": "要下线的节点IP" } } PUT _cluster/settings { "persistent": { "cluster.routing.allocation.exclude._host": "主机名" } } PUT _cluster/settings { "persistent": { "cluster.routing.allocation.exclude._name": "节点名称" } }

集群监控

集群健康状态:

状态含义核心风险
green所有主分片 + 副本分片 都正常分配完成✅ 完全健康,无任何问题
yellow所有主分片正常分配,但部分副本分片未分配⚠️ 数据冗余度不足,单节点故障可能导致数据丢失
red至少有一个主分片(及其副本)未分配,部分索引不可用❌ 集群功能受损,数据读写失败,业务受影响

Elasticsearch 集群自我监控(Monitoring)

在 Elasticsearch 中,集群内置的 X-Pack 自我监控模块会自动采集节点、索引、集群性能等核心监控指标,我们可以动态开启 / 关闭监控数据采集,也能自定义监控采集间隔,实现精细化管控。所有配置均支持在线动态生效,无需重启集群,操作便捷且不影响业务运行。

一、集群自我监控开关控制

监控采集功能支持两种持久化配置:persistent(永久生效,集群重启后保留)、transient(临时生效,集群重启后失效),推荐使用永久配置。

1. 开启集群自我监控(启动数据采集)

执行以下请求,启用监控数据采集功能,集群会开始自动收集各项运行指标:

json

// 永久开启自我监控,持续采集集群、节点、索引监控数据 PUT _cluster/settings { "persistent": { "xpack.monitoring.collection.enabled": true }, "transient": {} }

2. 关闭集群自我监控(停止数据采集)

若无需监控,可执行以下命令动态关闭,停止所有监控数据的生成:

json

// 永久关闭自我监控,停止采集监控数据 PUT _cluster/settings { "persistent": { "xpack.monitoring.collection.enabled": false }, "transient": {} }

二、修改监控数据采集间隔

Elasticsearch默认监控采集间隔为 10 秒,我们可以根据业务需求调整间隔:

  • 缩短间隔:获取更精细、实时的监控数据(适用于性能调试、高并发场景);
  • 延长间隔:降低集群资源消耗(适用于日常稳定运行场景)。

配置采集间隔(动态修改)

执行以下命令自定义采集周期,单位为毫秒(ms),示例修改为5 秒(5000ms)

json

// 永久修改监控采集间隔为 5 秒(精细化采集) PUT _cluster/settings { "persistent": { "xpack.monitoring.collection.interval": "1000ms" } }

常用配置参考:

  • 精细监控:1000ms(1 秒)
  • 默认配置:10000ms(10 秒)
  • 节能模式:30000ms(30 秒)

修改之后他的增速变快:

基于 Metricbeat 的分离式监控采集

这里为大家提供一下铭毅天下的安装课程:如何借助 Metricbeat + kibana 实现 Elasticsearch 8.X 集群的可视化监控?_哔哩哔哩_bilibili

在 Elasticsearch 生产集群中,传统的内置自监控(xpack.monitoring)存在与业务抢占资源、监控数据与业务数据混存、配置项废弃等问题,尤其在高并发持续写入场景下,会加剧磁盘压力并影响集群稳定性Elastic。为此,Elastic 官方在 7.16 版本后强烈推荐采用Metricbeat 分离采集架构,将监控能力从集群内部剥离,实现监控与生产解耦。

Metricbeat 是 Elastic Stack 中的轻量指标采集器,可独立部署于生产集群之外或各节点上,主动拉取 Elasticsearch 的节点状态、索引分片、JVM、磁盘、段合并、线程池等核心指标,并统一上报至独立的监控集群进行存储与展示Elastic。这种架构的核心优势在于:生产集群仅暴露查询接口,不承担监控数据的生成与存储压力,有效避免监控操作影响写入性能;同时监控数据独立存储,即使生产集群磁盘爆满或宕机,仍可完整保留监控日志用于故障回溯。

在配置层面,需在 Metricbeat 中启用elasticsearch-xpack模块并开启 xpack 模式,替代原有废弃的xpack.monitoring.collection.enabledinterval参数Elastic。采集周期可在 Metricbeat 中统一配置(默认 10s),不再依赖集群级别设置Elastic。通过将输出指向独立监控集群,实现监控数据流与业务数据流完全隔离,从根本上解决自监控带来的磁盘占用与性能干扰问题,特别适合大规模、高写入压力的 Elasticsearch 生产环境Elastic。

集群配置matricbeat步骤

指定监控集群地址:

下载解压metrixbeat文件

官方下载和安装文件:

Metricbeat quick start: installation and configuration | Metricbeat Reference [8.5] | Elastic

官方软件下载地址:

Metricbeat 8.5.2 | Elastic 具体的版本大家可以自行设置

drwxr-xr-x. 12 elastic elastic 268 5月 31 18:20 elasticsearch-8.5.2 -rwxr-xr-x. 1 elastic elastic 580694330 3月 1 15:02 elasticsearch-8.5.2-linux-x86_64.tar.gz drwxrwxr-x. 11 elastic elastic 222 5月 31 18:39 kibana-8.5.2 -rw-r--r--. 1 elastic elastic 223272744 5月 20 23:59 kibana-8.5.2-linux-x86_64.tar.gz -rw-r--r--. 1 root root 48141481 6月 1 11:16 metricbeat-8.5.2-linux-x86_64.tar.gz

启用 Elasticsearch x-pack 模块

在文件解压缩之后,执行命令,启用 Elasticsearch x-pack 模块

./metricbeat modules enable elasticsearch-xpack

执行之后显示:

[elastic@localhost metricbeat-8.5.2-linux-x86_64]$ ./metricbeat modules enable elasticsearch-xpack Enabled elasticsearch-xpack

配置modules.d/elasticsearch-xpack.yml.文件

如果是8.1版本的在配置这个配置文件之前,在es的集群配置中需要先打开配置:

PUT _cluster/settings
{
"persistent": {
"xpack.monitoring.collection.enabled": true
}
}

但是其他的可能不需要,具体是否需要,还是看对应版本的官网Collecting Elasticsearch monitoring data with Metricbeat | Elasticsearch Guide [8.1] | Elastic

# 启用 Elasticsearch 模块(Metricbeat 内置模块) - module: elasticsearch # 开启 X-Pack 监控模式(核心!) # 作用:自动采集 ES 的集群/节点/索引等监控指标, # 并按 Kibana Monitoring 要求的格式输出,不用自己配 metricsets。 xpack.enabled: true # 采集周期:每 10 秒拉一次 ES 监控数据 period: 10s # 要监控的 ES 地址(这里填被监控的生产 ES) # 格式:["http://IP:9200"],多个节点用逗号分隔 hosts: ["http://localhost:9200"] # (可选)采集范围:node=只采集当前节点;cluster=整集群 #scope: node # (可选)ES 开启安全认证时用的账号 #username: "user" # (可选)ES 密码 #password: "secret" # (可选)是否开启 SSL(ES 用 HTTPS 时必须打开) #ssl.enabled: true # (可选)CA 证书路径(用来验证 ES 服务器证书合法性) #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] # (可选)Metricbeat 客户端证书(双向认证时用) #ssl.certificate: "/etc/pki/client/cert.pem" # (可选)Metricbeat 客户端私钥 #ssl.key: "/etc/pki/client/cert.key" # (可选)SSL 证书校验策略 # full=严格校验(生产推荐);none=不校验(测试用) #ssl.verification_mode: "full"

安全模式下标准配置文件:

# Module: elasticsearch # Docs: https://www.elastic.co/guide/en/beats/metricbeat/8.5/metricbeat-module-elasticsearch.html - module: elasticsearch xpack.enabled: true period: 10s hosts: ["https://192.168.0.190:9200"] username: "elastic" password: "2ok8JzOq_kF-or*hcOpK" ssl.enabled: true ssl.certificate_authorities: ["/elasticsearch/elasticsearch-8.5.2/config/certs/http_ca.crt"]

配置 Metricbeat,让它把数据发送到监控集群

  1. 下面的配置修改方式都是直接借鉴的官网,大家可以看一下官网解释的原因和配置的方法

  2. Set the host and port where Metricbeat can find the Elasticsearch installation, and set the username and password of a user who is authorized to set up Metricbeat. For example:

    output.elasticsearch: hosts: ["https://myEShost:9200"] username: "metricbeat_internal" password: "YOUR_PASSWORD" ssl: enabled: true ca_trusted_fingerprint: "b9a10bbe64ee9826abeda6546fc988c8bf798b41957c33d05db736716513dc9c"

    This example shows a hard-coded password, but you should store sensitive values in the secrets keystore.

    This example shows a hard-coded fingerprint, but you should store sensitive values in the secrets keystore. The fingerprint is a HEX encoded SHA-256 of a CA certificate, when you start Elasticsearch for the first time, security features such as network encryption (TLS) for Elasticsearch are enabled by default. If you are using the self-signed certificate generated by Elasticsearch when it is started for the first time, you will need to add its fingerprint here. The fingerprint is printed on Elasticsearch start up logs, or you can refer to connect clients to Elasticsearch documentation for other options on retrieving it. If you are providing your own SSL certificate to Elasticsearch refer to Metricbeat documentation on how to setup SSL.

  3. If you plan to use our pre-built Kibana dashboards, configure the Kibana endpoint. Skip this step if Kibana is running on the same host as Elasticsearch.

    setup.kibana: host: "mykibanahost:5601" username: "my_kibana_user" password: "{pwd}"

    The hostname and port of the machine where Kibana is running, for example,mykibanahost:5601. If you specify a path after the port number, include the scheme and port:http://mykibanahost:5601/path.

    Theusernameandpasswordsettings for Kibana are optional. If you don’t specify credentials for Kibana, Metricbeat uses theusernameandpasswordspecified for the Elasticsearch output.

    To use the pre-built Kibana dashboards, this user must be authorized to view dashboards or have thekibana_adminbuilt-in role.

=============================================当前配置文件有问题========================= #这里配置的是将监控数据上报的监控节点 output.elasticsearch: # Array of hosts to connect to. hosts: ["192.168.0.190:9200"] # Protocol - either `http` (default) or `https`. protocol: "https" # Authentication credentials - either API key or username/password. #api_key: "id:api_key" username: "elastic" password: "2ok8JzOq_kF-or*hcOpK" ========================================================================================= 上面的配置再开启安全的情况下,再数据的采集端是正常的,但是再数据的写入时出现证书不信任的问题,所以需要再下面加上ssl的基本配置, 官网地址:https://www.elastic.co/guide/en/beats/metricbeat/8.5/elasticsearch-output.html output.elasticsearch: # Array of hosts to connect to. hosts: ["192.168.0.190:9200"] # Protocol - either `http` (default) or `https`. protocol: "https" # Authentication credentials - either API key or username/password. #api_key: "id:api_key" username: "elastic" password: "2ok8JzOq_kF-or*hcOpK" ssl.enabled: true ssl.certificate_authorities: ["/elasticsearch/elasticsearch-8.5.2/config/certs/http_ca.crt"] setup.kibana: # Kibana Host # Scheme and port can be left out and will be set to the default (http and 5601) # In case you specify and additional path, the scheme is required: http://localhost:5601/path # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601 host: "192.168.0.190:5601"

之后使用root的权限启动就可以了:

生产建议

上面再配置中使用的是超级用户的权限,但是再官网中有这么一段话:

If Elastic security features are enabled, you must also provide a user ID and password so that Metricbeat can collect metrics successfully:

  1. Create a user on the production cluster that has the remote_monitoring_collector built-in role. Alternatively, use the remote_monitoring_user built-in user.
  2. Add theusernameandpasswordsettings to the Elasticsearch module configuration file.
  3. If TLS is enabled on the HTTP layer of your Elasticsearch cluster, you must either use https as the URL scheme in thehostssetting or add thessl.enabled: truesetting. Depending on the TLS configuration of your Elasticsearch cluster, you might also need to specify additional ssl.* settings.
  • 你当前使用的是elastic超级管理员用户,拥有集群最高权限,测试环境可用、生产环境不推荐
  • 官方明确要求:监控采集必须使用专用低权限用户,禁止使用超级管理员;
  • 官方提供两种合规方案:
    • 使用内置用户remote_monitoring_user(自带采集权限)
    • 自定义用户 + 内置角色:remote_monitoring_collector
  • 若集群开启TLS/HTTPS,必须配置证书、协议,保证加密通信正常;
  • Metricbeat 的setup.kibana自动继承output.elasticsearch的账号密码,用于自动加载监控仪表盘,无需单独配置。
配置文件标准模板

(1)模块采集配置:modules.d/elasticsearch-xpack.yml

- module: elasticsearch xpack.enabled: true period: 10s # 连接本机ES,生产必须用https hosts: ["https://localhost:9200"] # 官方推荐:生产专用监控采集用户 username: "remote_monitoring_user" password: "你的用户密码" # 开启TLS ssl.enabled: true ssl.certificate_authorities: ["/elasticsearch/config/http_ca.crt"]

(2)数据输出配置:metricbeat.yml

output.elasticsearch: hosts: ["https://监控集群IP:9200"] # 写入监控集群同样使用专用用户 username: "remote_monitoring_user" password: "你的密码" ssl.enabled: true ssl.certificate_authorities: ["/path/to/ca.crt"] setup.kibana: host: "http://kibanaIP:5601" # 自动继承output中的账号密码,加载仪表盘,无需重复配置
http://www.jsqmd.com/news/937595/

相关文章:

  • 深度解析JetBrains Maple Mono:如何用字体合成技术重塑编程体验
  • 告别Touch Bar鸡肋!保姆级MTMR配置教程,打造你的专属Mac效率神器
  • JetBrains Maple Mono:程序员的终极编程字体解决方案
  • 基于 PaddleOCR 和 Flask 的学生证借书证识别与档案录入系统实战
  • 2026年推荐实验室实验台通风柜生产厂家:实验室整屋设备、配套定制、工程建设 - 海棠依旧大
  • Windows优化神器WinUtil:三小时变三分钟的智能系统管家
  • 55项功能终极指南:如何使用HsMod深度定制炉石传说游戏体验
  • 2026年便携式浊度计十大品牌权威推荐:技术参数、应用案例与选型实战指南 - 仪表品牌排行榜
  • 关于ffmpeg学习的思考,封装与错误处理
  • 快速排序扩展:三路划分与自省排序,解决重复元素和最坏退化问题
  • 别再到处找资源了!WinCC 7.5 SP2官方下载与Windows 10保姆级安装避坑指南
  • 如何快速解决Windows更新问题:终极修复工具完整指南
  • 基于 BERTopic 的电商评论主题聚类与差评原因分析系统实战
  • 经纬之间,连接世界:武汉圣擎航空助您高效通达全球商务与旅行热点 - 土星买买买
  • 泉州黄金回收哪家不玩套路?丰泽、晋江、鲤城三店实测实录 - 百福黄金回收
  • ASP与jmail发送邮件:一次实用的回顾
  • 3步搞定海尔智能设备接入HomeAssistant:新手完整指南
  • 黑龙江省专升本资料|2026外语专业基础课真题精练
  • 介绍网络编程中的Select
  • 从Linux命令行到MinIO存储桶:一份给运维的mc命令对照表与实战脚本
  • Arduino互动装置实战:超声波传感与伺服电机驱动恐怖画作
  • 3步解锁扫描PDF价值:OCRmyPDF让纸质文档重获数字生命
  • c++ 实现狼人游戏
  • 手把手教你用Multisim仿真MOS管电源开关电路(从N-MOS到P-MOS配置)
  • qoder-体验分享
  • 洛雪音乐音源完全指南:打破音乐平台限制的终极解决方案
  • 告别ifconfig!SUSE15保姆级安装与阿里云源配置全攻略
  • MATLAB相机标定一键运行包:单目/双目/鱼眼全兼容,含角点提取、畸变可视化与极线校正
  • 告别 “代码搬运工”,低代码平台如何从重复劳动中解放开发生产力
  • PE工具箱里的瑞士军刀:深度挖掘CGI增强版那些你可能不知道的隐藏功能(从ESD解密到动态磁盘)