Elasticsearch中的监控(Monitoring)功能介绍

news2025/6/9 20:58:37

Elasticsearch 的 监控(Monitoring) 功能用于实时跟踪集群的运行状态、性能指标和资源使用情况,帮助管理员及时发现潜在问题、优化配置并确保集群稳定高效运行。它通过内置工具和集成方案,提供从节点到集群、从硬件到服务层的全方位监控能力。

一、监控核心目标

  1. 集群健康状态
  • 检测集群是否正常运行,是否存在节点故障、分片分配异常等问题。
  1. 性能指标采集
  • 收集节点、索引、分片的CPU、内存、磁盘、网络等资源使用数据。
  • 追踪搜索、写入、合并等操作的延迟、吞吐量和错误率。
  1. 异常行为预警
  • 通过阈值告警及时发现内存溢出、磁盘空间不足、慢查询等风险。
  1. 历史趋势分析
  • 存储历史监控数据,用于分析集群负载变化、容量规划和性能调优。

二、内置监控工具:Elasticsearch Monitoring(X-Pack Monitoring)

Elasticsearch 从 5.0 版本开始通过 X-Pack 插件 提供内置监控功能(需启用 X-Pack,基础功能免费),主要包含以下组件:

  1. 监控数据采集
  • 自动采集指标:
  • 节点级指标:CPU 使用率、JVM 内存(堆/非堆)、垃圾回收(GC)频率、文件描述符、线程池状态等。
  • 集群级指标:集群健康状态(绿色/黄色/红色)、分片总数、未分配分片数、主节点状态等。
  • 索引级指标:文档数、存储大小、写入速率(索引/删除操作)、搜索速率(查询/扫描操作)、分片副本状态等。
  • 线程池指标:队列长度、活跃线程数、拒绝任务数(反映请求处理压力)。
  • 采集频率:默认每 10 秒采集一次节点指标,每分钟采集一次集群和索引指标。
  1. 监控数据存储
  • 监控数据默认存储在 Elasticsearch 自身的 .monitoring-* 索引 中(可通过配置指定其他集群存储)。
  • 支持数据保留策略(如保留 30 天数据),避免占用过多磁盘空间。
  1. 可视化界面
  • 集群概览:显示集群健康状态、节点数量、数据节点/主节点分布、资源使用趋势(CPU/内存/磁盘)。
  • 节点详情:单个节点的 JVM 内存、GC 日志、线程池、网络 I/O 等实时数据。
  • 索引分析:按索引展示文档增长趋势、写入/搜索性能、分片分布及副本利用率。
  • 慢查询日志:捕获执行时间超过阈值的查询,帮助定位性能瓶颈。
  1. 告警功能
  • 通过 Elasticsearch Alerting(需单独配置)设置阈值规则,例如:
  • 当集群健康状态变为红色时触发告警。
  • 节点 JVM 内存使用率超过 80% 时发送通知。
  • 磁盘剩余空间低于 10% 时告警。

三、监控指标分类与示例

指标类别 具体指标 说明
集群健康 status (绿/黄/红) 绿色:所有分片可用;黄色:部分副本分片不可用;红色:主分片不可用。
unassigned_shards 未分配的分片数(通常因节点故障或磁盘不足导致)。
节点资源 jvm.mem.heap.used_percent JVM 堆内存使用率(建议控制在 70% 以下,避免频繁 GC)。
process.cpu.percent 节点进程的 CPU 使用率(持续高于 80% 可能需扩容或优化查询)。
disk.used_percent 磁盘使用率(建议保留 20% 以上空间,避免节点自动熔断)。
索引性能 indexing.index_total 累计索引文档数(写入吞吐量)。
search.query_time_in_millis 平均查询耗时(慢查询可能由复杂查询或分片分布不均导致)。
merge.total_time_in_millis 段合并总耗时(合并频繁可能影响写入性能)。
分片状态 shards.primary 主分片数量。
shards.replica 副本分片数量。
shards.started 已启动的分片数(未启动可能因节点负载过高或配置限制)。

四、监控配置与启用

  1. 启用 X-Pack Monitoring

在 elasticsearch.yml 中配置:

xpack.monitoring.enabled: true          # 启用监控功能
xpack.monitoring.collection.enabled: true  # 启用数据采集
xpack.monitoring.exporters:             # 配置数据存储(默认存储到本地集群)
 - type: elasticsearch
   hosts: ["http://localhost:9200"]
   index: ".monitoring-es-8-*"         # 监控数据索引名称(版本号自动更新)


2. 调整采集频率与保留策略

# 全局采集频率(单位:毫秒,默认 60000 毫秒即 1 分钟)
xpack.monitoring.collection.interval: 30s  

# 配置索引生命周期管理(ILM)策略,控制监控数据保留时间
xpack.monitoring.ui.container.ilm.pattern: "{now/d}-000001"
xpack.monitoring.ui.container.ilm.max_age: 30d  # 保留 30 天数据
  1. 与 Kibana 集成

通过 Kibana 的 Monitoring 应用 可视化监控数据:

  1. 确保 Kibana 已启用 X-Pack 并连接到 Elasticsearch 集群。
  2. 在 Kibana 左侧导航栏选择 Monitoring > Elasticsearch,查看集群、节点、索引的实时图表。

五、高级监控方案

  1. 跨集群监控
  • 通过 Elasticsearch Remote Monitoring 监控多个集群,将数据集中存储到一个中央监控集群。
  • 配置示例:
# 被监控集群(远程集群)配置
xpack.monitoring.relocate.enabled: true
xpack.monitoring.relocate.cluster_alias: "remote-cluster"
xpack.monitoring.exporters:
  - type: http
    hosts: ["http://central-monitoring-cluster:9200"]
  1. 与外部监控系统集成
  • Prometheus + Grafana:通过 Elasticsearch Exporter 将指标导出到 Prometheus,再用 Grafana 可视化。
  • Cloud Monitoring:在云平台(如 AWS、Google Cloud)中集成 Elasticsearch 监控指标。
  • 日志聚合系统:将监控数据与其他系统日志结合分析(如通过 Logstash 转发到 Elasticsearch 或外部存储)。
  1. 自定义指标采集
  • 通过 Elasticsearch API 或插件(如 Marvel)采集自定义业务指标(如特定查询的响应时间)。

六、最佳实践

  1. 优先关注关键指标
  • 集群健康状态( _cluster/health )、节点 JVM 内存、磁盘使用率、慢查询。
  1. 设置合理告警阈值
  • 例如:JVM 内存使用率 > 75%、磁盘剩余空间 < 15%、集群健康状态非绿色。
  1. 定期分析历史数据
  • 通过历史趋势预测容量需求(如文档增长速率),提前规划硬件扩容或索引生命周期策略。
  1. 分离监控数据存储
  • 将监控数据存储在独立集群或专用索引,避免影响业务数据性能。
  1. 监控用户行为
  • 结合审计日志(Audit Logging)分析用户操作与性能波动的关联。

七、总结

Elasticsearch 的监控功能是保障集群稳定运行的核心能力,通过内置的 X-Pack Monitoring 可快速实现可视化监控和告警,而结合外部工具(如 Prometheus、Grafana)则能进一步扩展监控灵活性。合理配置监控指标、阈值和存储策略,有助于提前发现并解决性能瓶颈,确保 Elasticsearch 集群高效、可靠地支持业务需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2405832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Centos7.6图文安装mysql8.4详细步骤记录

1 前提条件 1.1 关闭数据库服务器的防火墙 # 关闭数据库服务器的防火墙 systemctl stop firewalld systemctl disable firewalld 1.2 关闭SELinux # 编辑 /etc/selinux/configvi /etc/selinux/config#内容更改为disabledSELINUXdisabled 1.3 卸载系统自身带的mysql&#…

AI短视频创富营

课程内容&#xff1a; 相关资料 【第一章】前期准备 001.【涨粉技巧】新账号如何快速涨粉?_ev(1).mp4 002.【带贷权限】如何开通账号带贷权限?(1).mp4 003.【费用缴纳】如何缴纳账号保证金?_ev(1).mp4 004.【账号检测】如何检测账号是否限流?(1).mp4 005.【风险规避…

spring中的@RabbitListener注解详解

基本用法主要属性1. queues / queueNames2. containerFactory3. id4. concurrency5. ackMode6. priority7. bindings 高级特性1. 消息转换器2. 手动确认3. 条件监听4. 错误处理 配置监听容器工厂注意事项完整示例循环依赖解决1. 使用 Setter 注入2. 使用 Lazy 注解3. 重构代码结…

MySQL-运维篇

运维篇 日志 错误日志 错误日志是 MySQL 中最重要的日志之一&#xff0c;它记录了当 mysqld 启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关信息当数据库出现任何故障导致无法正常使用时&#xff0c;建议首先查看此日志。 该日志是默认开启的&am…

深度优先算法学习

1: 从 1点出发到 15点 #include <stdio.h>#define MAX_NODES 100typedef struct {int node_id;int *nextNodes;int nextNodesSize; } Node;// 假设我们有一个节点数组&#xff0c;全局保存了所有节点 Node nodes[MAX_NODES];void dfs(int node_id) {Node *node &n…

前端技能包

ES6 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><script>// 变量定义var a1;let b5; // 现在使用let 定义变量// 对象解构let person{&quo…

【笔记】PyCharm 使用问题反馈与官方进展速览

#工作记录 https://youtrack.jetbrains.com/issue/IJPL-190308 【笔记】记一次PyCharm的问题反馈_the polyglot context is using an implementation th-CSDN博客 【笔记】与PyCharm官方沟通解决开发环境问题-CSDN博客 与 JetBrains 官方沟通记录&#xff08;PyCharm 相关问题…

操作系统期末版

文章目录 概论处理机管理进程线程处理机调度生产者消费者问题 死锁简介死锁的四个必要条件解决死锁的方法 存储管理链接的三种方式静态链接装入时动态链接运行时链接 装入内存的三种方式绝对装入可重定位装入动态运行时装入 覆盖交换存储管理方式连续分配**分段存储管理方式***…

自然语言处理——语言模型

语言模型 n元文法参数估计数据平滑方法加1法 神经网络模型提出原因前馈神经网络&#xff08;FNN&#xff09;循环神经网络 n元文法 大规模语料库的出现为自然语言统计处理方法的实现提供了可能&#xff0c;统计方法的成功应用推动了语料库语言学的发展。 语句 &#x1d460; …

数据库管理与高可用-MySQL高可用

目录 #1.1什么是MySQL高可用 1.1.1MySQL主主复制keepalivedhaproxy的高可用 1.1.2优势 #2.1MySQL主主复制keepalivedhaproxy的实验案例 1.1什么是MySQL高可用 MySQL 高可用是指通过技术手段确保 MySQL 数据库在面临硬件故障、软件错误、网络中断、人为误操作等异常情况时&…

免费工具-微软Bing Video Creator

目录 引言 一、揭秘Bing Video Creator 二、轻松上手&#xff1a;三步玩转Bing Video Creator 2.1 获取与访问&#xff1a; 2.2 创作流程&#xff1a; 2.3 提示词撰写技巧——释放AI的想象力&#xff1a; 三、核心特性详解&#xff1a;灵活满足多样化需求 3.1 双重使用模…

【笔记】解决MSYS2安装后cargo-install-update.exe-System Error

#工作记录 cargo-install-update.exe-System Error The code execution cannot proceed because libgit2-1.9.dll wasnot found. Reinstalling the program may fix this problem. …

银行卡二三四要素实名接口如何用PHP实现调用?

一、什么是银行卡二三四要素实名接口 输入银行卡卡号、姓名、身份证号码、手机号&#xff0c;验证此二三四要素是否一致。 二、核心价值 1. 提升风控效率 通过实时拦截冒用身份开户&#xff0c;银行卡二三四要素实名接口显著降低了人工审核成本&#xff0c;效率提升50%以上…

itvbox绿豆影视tvbox手机版影视APP源码分享搭建教程

我们先来看看今天的主题&#xff0c;tvbox手机版&#xff0c;然后再看看如何搭建&#xff1a; 很多爱好者都希望搭建自己的影视平台&#xff0c;那该如何搭建呢&#xff1f; 后端开发环境&#xff1a; 1.易如意后台管理优化版源码&#xff1b; 2.宝塔面板&#xff1b; 3.ph…

网页抓取混淆与嵌套数据处理流程

当我们在网页抓取中&#xff0c;遇到混淆和多层嵌套的情况是比较常见的挑战。混淆大部分都是为了防止爬虫而设计的&#xff0c;例如使用JavaScript动态加载、数据加密、字符替换、CSS偏移等。多层嵌套则可能是指HTML结构复杂&#xff0c;数据隐藏在多层标签或者多个iframe中。 …

高性能MYSQL:复制同步的问题和解决方案

一、复制的问题和解决方案 中断MySQL的复制并不是件难事。因为实现简单&#xff0c;配置相当容易&#xff0c;但也意味着有很多方式会导致复制停止&#xff0c;陷入混乱并中断。 &#xff08;一&#xff09;数据损坏或丢失的错误 由于各种各样的原因&#xff0c;MySQL 的复制…

大话软工笔记—架构模型

1. 架构模型1—拓扑图 &#xff08;1&#xff09;拓扑图概念 拓扑图&#xff0c;将多个软件系统用网络图连接起来的表达方式。 &#xff08;2&#xff09;拓扑图分类 总线型结构 比较普遍采用的方式&#xff0c;将所有的系统接到一条总线上。 星状结构 各个系统通过点到…

javaweb -html -CSS

HTML是一种超文本标记语言 超文本&#xff1a;超过了文本的限制&#xff0c;比普通文本更强大&#xff0c;除了文字信息&#xff0c;还可以定义图片、音频、视频等内容。 标记语言&#xff1a;由标签"<标签名>"构成的语言。 CSS:层叠样式表&#xff0c;用于…

spring task定时任务快速入门

spring task它基于注解和配置&#xff0c;可以轻松实现任务的周期性调度、延迟执行或固定频率触发。按照我们约定的时间自动执行某段代码。例如闹钟 使用场景 每月还款提醒&#xff0c;未支付的订单自动过期&#xff0c;收到快递后自动收货&#xff0c;系统自动祝你生日快乐等…

搭建nginx的负载均衡

1、编写一个configMap的配置文件 events {worker_connections 1024; # 定义每个worker进程的最大连接数 }http {# 定义通用代理参数&#xff08;替代proxy_params文件&#xff09;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-F…