在分布式系统架构中,Elasticsearch(简称ES)作为日志存储、全文检索的核心组件,其集群健康状态、节点资源利用率、索引性能等指标直接关系到业务的稳定性。传统手动登录节点查看ES状态的方式,不仅效率低下,还无法实时感知系统异常。而Prometheus搭配Grafana的组合,凭借强大的指标采集和可视化能力,成为解决ES监控需求的最优方案之一。本文将详细讲解如何从零搭建这套监控体系,覆盖elasticsearch_exporter部署、Prometheus配置、Grafana可视化全流程。
一、监控原理概述
ES本身不会直接暴露Prometheus可识别的监控指标,因此需要借助elasticsearch_exporter作为数据中转桥梁,整体监控流程分为三步:
- 部署
elasticsearch_exporter:在每台ES节点上运行该组件,它会主动抓取ES的原生监控指标,如集群健康状态、节点CPU/内存占用、索引分片数量等。 - Prometheus数据拉取与存储:Prometheus会按照配置的时间间隔,从
elasticsearch_exporter暴露的接口拉取监控数据,并将其存储在自带的时序数据库中。 - 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能够开机自启并方便管理,将其配置为系统服务:
-
创建系统服务配置文件
bashvim /etc/systemd/system/prometheus.service -
在文件中添加以下内容
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 创建数据目录并修改配置文件
-
创建数据存储目录并设置权限
bash# 创建数据目录 mkdir -p /usr/local/prometheus/data/ # 进入Prometheus安装目录 cd /usr/local/prometheus # 创建prometheus用户 useradd prometheus # 修改目录属主,确保权限正确 chown -R prometheus.prometheus ./* -
修改Prometheus配置文件,添加ES监控任务
编辑prometheus.yml配置文件,新增一个job用于拉取ES监控数据:bashvim /usr/local/prometheus/prometheus.yml在配置文件中添加以下内容:
yaml- job_name: 'es' file_sd_configs: - files: ["/usr/local/prometheus/conf.d/es.json"] refresh_interval: 15s -
创建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监控状态
-
访问Prometheus Web界面:在浏览器中输入
http://192.168.184.152:9090。

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

-
验证监控指标:在查询框中输入指标名称(如
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获取数据,配置步骤如下:
-
登录Grafana后,点击菜单栏的
Add your first data source。

-
在数据源列表中选择
Prometheus。

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

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

4.4 导入ES监控Dashboard
Grafana社区提供了丰富的预置Dashboard模板,本文使用模板ID 14191(Elasticsearch Overview),配置步骤如下:
-
点击菜单栏的
Dashboards->Import。


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

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

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

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