使用Prometheus+Grafana实现Elasticsearch监控的完整实践

在分布式系统架构中,Elasticsearch(简称ES)作为日志存储、全文检索的核心组件,其集群健康状态、节点资源利用率、索引性能等指标直接关系到业务的稳定性。传统手动登录节点查看ES状态的方式,不仅效率低下,还无法实时感知系统异常。而Prometheus搭配Grafana的组合,凭借强大的指标采集和可视化能力,成为解决ES监控需求的最优方案之一。本文将详细讲解如何从零搭建这套监控体系,覆盖elasticsearch_exporter部署、Prometheus配置、Grafana可视化全流程。

一、监控原理概述

ES本身不会直接暴露Prometheus可识别的监控指标,因此需要借助elasticsearch_exporter作为数据中转桥梁,整体监控流程分为三步:

  1. 部署elasticsearch_exporter:在每台ES节点上运行该组件,它会主动抓取ES的原生监控指标,如集群健康状态、节点CPU/内存占用、索引分片数量等。
  2. Prometheus数据拉取与存储:Prometheus会按照配置的时间间隔,从elasticsearch_exporter暴露的接口拉取监控数据,并将其存储在自带的时序数据库中。
  3. Grafana可视化展示:Grafana对接Prometheus数据源,通过预置的Dashboard模板,将枯燥的指标数据转化为直观的图表,方便运维人员实时监控与异常排查。

二、部署elasticsearch_exporter

elasticsearch_exporter是连接ES与Prometheus的关键组件,需在所有ES节点上部署,本文以Linux(CentOS)环境为例进行演示。

2.1 下载并解压exporter

选择官方稳定版本(本文使用v1.7.0,兼容主流ES版本),执行以下命令完成下载与解压:

bash 复制代码
# 进入系统临时下载目录
cd /usr/src
# 下载exporter压缩包
wget https://github.com/prometheus-community/elasticsearch_exporter/releases/download/v1.7.0/elasticsearch_exporter-1.7.0.linux-amd64.tar.gz
# 解压压缩包
tar zxvf elasticsearch_exporter-1.7.0.linux-amd64.tar.gz
# 移动到标准安装目录,便于统一管理
mv elasticsearch_exporter-1.7.0.linux-amd64 /usr/local/elasticsearch_exporter/

2.2 启动exporter并验证进程

使用nohup命令让exporter后台运行,并通过参数指定ES连接地址、监听端口等关键配置:

bash 复制代码
# 进入exporter安装目录
cd /usr/local/elasticsearch_exporter/
# 后台启动exporter,配置关键参数
nohup ./elasticsearch_exporter --es.all --es.indices --es.indices_settings --es.shards --es.timeout=10s --web.listen-address=":9115" --web.telemetry-path="/metrics" --es.uri http://192.168.184.152:9200/ &
# 验证进程是否启动成功
ps -ef | grep elasticsearch_exporter

若命令输出中包含elasticsearch_exporter相关进程,则说明启动成功。

2.3 测试监控数据抓取

exporter启动后,会在9115端口的/metrics路径暴露监控数据。通过curl命令或浏览器访问该地址,验证数据是否正常输出:

bash 复制代码
# 本地测试数据抓取
curl http://192.168.184.152:9115/metrics

若返回结果中包含大量以elasticsearch_开头的指标(如elasticsearch_cluster_health_status),则表明exporter已成功抓取ES监控数据。

三、配置并启动Prometheus

Prometheus是监控系统的核心,负责数据的拉取、存储与查询,接下来完成其安装与配置。

3.1 下载并安装Prometheus

前往Prometheus官方下载页选择对应版本,本文使用v3.8.1:

bash 复制代码
# 进入下载目录
cd /usr/src
# 下载Prometheus压缩包
wget https://github.com/prometheus/prometheus/releases/download/v3.8.1/prometheus-3.8.1.linux-amd64.tar.gz
# 解压压缩包
tar zxvf prometheus-3.8.1.linux-amd64.tar.gz
# 移动到标准安装目录
mv prometheus-3.8.1.linux-amd64 /usr/local/prometheus

3.2 配置Prometheus为系统服务

为了让Prometheus能够开机自启并方便管理,将其配置为系统服务:

  1. 创建系统服务配置文件

    bash 复制代码
    vim /etc/systemd/system/prometheus.service
  2. 在文件中添加以下内容

    ini 复制代码
    [Unit]
    Description=Prometheus
    After=network-online.target
    
    [Service]
    User=prometheus
    Restart=on-failure
    ExecStart=/usr/local/prometheus/prometheus --storage.tsdb.path=/usr/local/prometheus/data/ --config.file=/usr/local/prometheus/prometheus.yml
    
    [Install]
    WantedBy=multi-user.target

3.3 创建数据目录并修改配置文件

  1. 创建数据存储目录并设置权限

    bash 复制代码
    # 创建数据目录
    mkdir -p /usr/local/prometheus/data/
    # 进入Prometheus安装目录
    cd /usr/local/prometheus
    # 创建prometheus用户
    useradd prometheus
    # 修改目录属主,确保权限正确
    chown -R prometheus.prometheus ./*
  2. 修改Prometheus配置文件,添加ES监控任务
    编辑prometheus.yml配置文件,新增一个job用于拉取ES监控数据:

    bash 复制代码
    vim /usr/local/prometheus/prometheus.yml

    在配置文件中添加以下内容:

    yaml 复制代码
    - job_name: 'es'
        file_sd_configs:
          - files: ["/usr/local/prometheus/conf.d/es.json"]
            refresh_interval: 15s
  3. 创建ES目标节点配置文件

    bash 复制代码
    # 创建配置目录
    mkdir /usr/local/prometheus/conf.d
    # 编辑目标节点配置文件
    vim /usr/local/prometheus/conf.d/es.json

    添加ES节点的exporter地址及标签信息:

    json 复制代码
    [
      {
        "targets": [
          "192.168.184.152:9115"
        ],
        "labels": {
              "servicename": "ES",
              "env": "Prod",
              "hostname": "es-02"
        }
      }
    ]

3.4 启动Prometheus并验证

bash 复制代码
# 启动Prometheus服务
systemctl start prometheus
# 验证服务是否启动成功
ps -ef | grep prometheus

3.5 查看Prometheus监控状态

  1. 访问Prometheus Web界面:在浏览器中输入http://192.168.184.152:9090

  2. 查看目标节点状态:点击菜单栏的Status -> Target health,可查看es任务下的节点是否处于UP状态。

  3. 验证监控指标:在查询框中输入指标名称(如elasticsearch_cluster_health_status),点击Execute,可查看具体的指标数据。

四、部署Grafana实现可视化

Prometheus仅能提供指标查询功能,而Grafana可以将指标转化为直观的图表,接下来完成Grafana的部署与配置。

4.1 安装Grafana

选择官方稳定版本(本文使用v10.2.3),通过yum命令快速安装:

bash 复制代码
yum install -y https://dl.grafana.com/oss/release/grafana-10.2.3-1.x86_64.rpm

4.2 启动Grafana并登录

bash 复制代码
# 启动Grafana服务
systemctl start grafana-server.service
# 验证服务是否启动
ps -ef | grep grafana

在浏览器中输入http://192.168.184.152:3000访问Grafana Web界面,默认用户名和密码均为admin。登录后可根据提示修改密码,也可选择跳过。

4.3 配置Prometheus数据源

Grafana需要对接Prometheus获取数据,配置步骤如下:

  1. 登录Grafana后,点击菜单栏的Add your first data source

  2. 在数据源列表中选择Prometheus

  3. 在配置页面中,填写Prometheus的访问地址(如http://192.168.184.152:9090),其他配置保持默认。

  4. 点击页面底部的Save & Test,若提示Data source is working,则表示数据源配置成功。

4.4 导入ES监控Dashboard

Grafana社区提供了丰富的预置Dashboard模板,本文使用模板ID 14191(Elasticsearch Overview),配置步骤如下:

  1. 点击菜单栏的Dashboards -> Import

  2. Import via grafana.com输入框中填写14191,点击Load

  3. 在模板配置页面,选择已配置的Prometheus数据源,点击Import

4.5 查看ES监控数据

导入Dashboard后,即可进入监控面板,查看ES的集群健康状态、节点资源使用率、索引性能等核心指标的可视化图表,实现对ES集群的实时监控。

五、总结

通过elasticsearch_exporter+Prometheus+Grafana的组合,我们搭建了一套完整的ES监控体系。该方案不仅能实时采集ES的核心监控指标,还能通过可视化图表直观展示系统状态,帮助运维人员快速发现并定位问题。在实际生产环境中,还可以根据业务需求,自定义监控告警规则,进一步提升系统的稳定性与可维护性。

相关推荐
阿杰 AJie4 小时前
Git 分支与多人开发使用指南(Gitee + 本地 Git)
git·elasticsearch·gitee
海鸥814 小时前
ArgoCD App of Apps 模式详解
java·elasticsearch·argocd
Dxy12393102164 小时前
深度解析 Elasticsearch 8.13.4 范围查询 DSL
大数据·elasticsearch
Zilliz Planet5 小时前
官宣 | Milvus 2.6云上GA:三层存储降本85% 、速度快ES 4-7 倍,多数据类型支持
大数据·elasticsearch·搜索引擎·全文检索·milvus
峥嵘life6 小时前
Android16 系统每月Google安全补丁导入说明
大数据·elasticsearch·搜索引擎
Dxy12393102166 小时前
Elasticsearch 8.13.4 地理范围查询实战指南
大数据·elasticsearch·jenkins
天草二十六_简村人6 小时前
ES索引检索课程名称时,同时支持模糊搜索和精准搜索
大数据·后端·elasticsearch·搜索引擎·全文检索
铭毅天下7 小时前
从软考开始考 Elasticsearch 说开去 ......
大数据·elasticsearch·搜索引擎·全文检索
yumgpkpm8 小时前
Cloudera CDP/CMP华为鲲鹏版下 Spark应用加速,华为昇腾芯片的实用配置过程
hive·hadoop·elasticsearch·flink·kafka·hbase·cloudera