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

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

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: elasticsearchhosts: ["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: httphosts: ["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 集群高效、可靠地支持业务需求。

相关文章:

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

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

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.【风险规避…...

C++.OpenGL (4/64)纹理(Texture)

纹理(Texture) 纹理映射核心流程 #mermaid-svg-XxVbt4fizulzb5H3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-XxVbt4fizulzb5H3 .error-icon{fill:#552222;}#mermaid-svg-XxVbt4fizulzb5H3 .error-text{fill:…...

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…...

青少年编程与数学 01-011 系统软件简介 08 Windows操作系统

青少年编程与数学 01-011 系统软件简介 08 Windows操作系统 1. Windows操作系统的起源与发展1.1 早期版本&#xff08;1985-1995&#xff09;1.2 Windows 9x系列&#xff08;1995-2000&#xff09;1.3 Windows NT系列&#xff08;1993-2001&#xff09;1.4 Windows XP及以后版…...

前端技能包

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…...

Vue-github 用户搜索案例

一、前言 在 Vue 开发中&#xff0c;与后端或第三方 API 接口进行交互是非常常见的需求。GitHub 提供了开放的 RESTful API&#xff0c;非常适合用来练习 Vue 的异步请求和数据绑定功能。 本文将带你一步步实现一个完整的 GitHub 用户搜索系统&#xff0c;包括&#xff1a; …...

Mac版Visual Studio Code Copilot 无法使用的解决方法

1 app文件夹删除Visual Studio Code 2 终端里面 输入以下指令&#xff0c;删除各种缓存 rm -fr ~/Library/Preferences/com.microsoft.VSCode.helper.plist rm -fr ~/Library/Preferences/com.microsoft.VSCode.plist rm -fr ~/Library/Caches/com.microsoft.VSCode rm -f…...

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

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

操作系统期末版

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

本地主机部署开源企业云盘Seafile并实现外部访问

Seafile是一个开源、专业、可靠的云存储平台&#xff1b;解决文件集中存储、共享和跨平台访问等问题。这款软件功能强大&#xff0c;界面简洁、操作方便。 本文将详细的介绍如何利用本地主机部署 Seafile&#xff0c;并结合nat123&#xff0c;实现外网访问本地部署的 Seafile …...

微前端 - Native Federation使用完整示例

这是一个极简化的 Angular 使用angular-architects/native-federation 插件的微前端示例&#xff0c;只包含一个主应用和一个远程应用。 完整示例展示 项目结构 federation-simple/ ├── host-app/ # 主应用 └── remote-app/ # 远程应用 创建远程应用 (remote…...

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

语言模型 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 数据库在面临硬件故障、软件错误、网络中断、人为误操作等异常情况时&…...

QuaggaJS用法详解

QuaggaJS简介 QuaggaJS是一个强大的JavaScript库&#xff0c;专门用于在浏览器环境中进行条形码和二维码识别。它支持多种条形码格式&#xff0c;包括Code 128、Code 39、EAN、QR码等&#xff0c;并且可以直接调用设备摄像头进行实时扫描。 QuaggaJS核心功能与用法 1. 基本配…...

【鸿蒙在 ETS (Extendable TypeScript) 中创建多级目录或文件,可以使用鸿蒙的文件系统 API】

鸿蒙在 ETS (Extendable TypeScript) 中创建多级目录或文件&#xff0c;可以使用鸿蒙的文件系统 API。 // 导入需要的模块 import fs from ohos.file.fs;const TAG"Index" Entry Component struct Index {State message: string Hello World;build() {Row() {Colum…...

免费工具-微软Bing Video Creator

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

2025 cs144 Lab Checkpoint 3: TCP Receiver

文章目录 1 关于TCP Sender1.1 关键机制重传超时&#xff08;RTO&#xff09;与定时器 2 实现TCP Sender2.1 void push&#xff08; const TransmitFunction& transmit &#xff09;;const TransmitFunction& transmit 函数型参数&#xff1f;从哪里读取字节&#xff1…...

【学习笔记】深入理解Java虚拟机学习笔记——第5章 调优案例分析与实战

第5章 调优案例分析与实战 5.1 概述 略 5.2 案例分析 5.2.1 大内存硬件上的程序部署策略 为防止大内存一次Full GC时间过长&#xff0c;可以考虑使用响应速度优先的垃圾回收器&#xff0c;还可以通过将一个10GB堆内存的应用分解为5个2GB堆内存应用&#xff0c;并通过负载均…...

Vue 3 Teleport 实战:优雅实现模态框、通知和全局组件

Vue 3 Teleport&#xff1a;突破 DOM 层级限制的组件渲染利器 在 Vue 应用开发中&#xff0c;组件通常与其模板的 DOM 结构紧密耦合。但当处理模态框&#xff08;Modal&#xff09;、通知&#xff08;Toast&#xff09;或全局 Loading 指示器时&#xff0c;这种耦合会成为障碍…...

使用高斯朴素贝叶斯算法对鸢尾花数据集进行分类

高斯朴素贝叶斯算法通常用于特征变量是连续变量&#xff0c;符合高素分布的情况。 使用高斯朴素贝叶斯算法对鸢尾花数据集进行分类 """ 使用高斯贝叶斯堆鸢尾花进行分类 """ #导入需要的库 from sklearn.datasets import load_iris from skle…...

vue中ref的详解以及react的ref对比

文章目录 1. ref是什么2. ref的使用3. ref的特性4. 使用场景5. 注意事项6. 与 React 的对比7. 动态 ref8. 函数式组件中的 ref9. 组合式 API 中的 ref10. 总结 1. ref是什么 ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。可以通过实例对象…...

【笔记】解决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. …...

[论文阅读] 人工智能+软件工程 | MemFL:给大模型装上“项目记忆”,让软件故障定位又快又准

【论文解读】MemFL&#xff1a;给大模型装上“项目记忆”&#xff0c;让软件故障定位又快又准 论文信息 arXiv:2506.03585 Improving LLM-Based Fault Localization with External Memory and Project Context Inseok Yeo, Duksan Ryu, Jongmoon Baik Subjects: Software Engi…...

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

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

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

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

Docker load 后镜像名称为空问题的解决方案

在使用 docker load命令从存档文件中加载Docker镜像时&#xff0c;有时会遇到镜像名称为空的情况。这种情况通常是由于在保存镜像时未正确标记镜像名称和标签&#xff0c;或者在加载镜像时出现了意外情况。本文将介绍如何诊断和解决这一问题。 一、问题描述 当使用 docker lo…...