【Prometheus & Grafana】搭建可视化监控平台
- 【一】介绍
-
- 【1】Prometheus概述
- 【2】Grafana概述
- 【3】架构设计
- [【4】各组件对应 Exporter 清单](#【4】各组件对应 Exporter 清单)
- 【5】基础环境
- 【6】部署方式
- 【二】下载二进制包部署
- [【三】Docker Compose部署](#【三】Docker Compose部署)
-
- [【1】步骤 1:部署核心服务 Prometheus + Grafana + AlertManager](#【1】步骤 1:部署核心服务 Prometheus + Grafana + AlertManager)
-
- (1)创建目录与配置文件
- (2)准备docker-compose.yml
- [(3)prometheus/prometheus.yml 主配置](#(3)prometheus/prometheus.yml 主配置)
- [(4)alertmanager/alert.yml 告警推送配置(钉钉示例)](#(4)alertmanager/alert.yml 告警推送配置(钉钉示例))
- (5)启动容器
- [(6)Grafana 初始化配置](#(6)Grafana 初始化配置)
- [【2】步骤 2:逐个部署各类组件 Exporter 采集指标](#【2】步骤 2:逐个部署各类组件 Exporter 采集指标)
-
- [(1)服务器硬件监控 node_exporter(所有机器部署)](#(1)服务器硬件监控 node_exporter(所有机器部署))
- [(2)MySQL 集群监控 mysqld_exporter](#(2)MySQL 集群监控 mysqld_exporter)
- [(3)Redis 集群 redis_exporter](#(3)Redis 集群 redis_exporter)
- [(4)Elasticsearch es_exporter](#(4)Elasticsearch es_exporter)
- [(5)RocketMQ rocketmq-exporter](#(5)RocketMQ rocketmq-exporter)
- [(6)Doris 集群(无需额外 Exporter,内置 Metrics)](#(6)Doris 集群(无需额外 Exporter,内置 Metrics))
- [(7)SpringBoot 服务集群监控(Actuator + micrometer)](#(7)SpringBoot 服务集群监控(Actuator + micrometer))
- [(8)DataX 集群监控(JMX Exporter)](#(8)DataX 集群监控(JMX Exporter))
- [【3】步骤 3:配置告警规则(rules 目录新建各类 yml)](#【3】步骤 3:配置告警规则(rules 目录新建各类 yml))
- [【4】步骤 4:Grafana 可视化完整操作](#【4】步骤 4:Grafana 可视化完整操作)
- 【四】其他监控
-
- 【1】mysql
- 【2】redis
-
- (1)安装redis-exporter
- (2)编写服务启动文件并启动服务
- (2)修改Prometheus配置,添加监控节点
- [(3)Grafana Redis 推荐面板](#(3)Grafana Redis 推荐面板)
【一】介绍
【1】Prometheus概述
Prometheus 是一个开源的监控和报警系统,主要用于收集和存储时序数据。他的核心作用是监控应用和服务器等基础设施的状态,并根据收集到的数据进行报警。它能够对系统、服务、应用程序和硬件的各种指标(如 CPU 使用率、内存消耗、请求延迟等)进行实时监控。

上图是 Prometheus 的主要的架构图,其中分为以下几个关键组件:
Prometheus 作为一个完整的监控系统,具有多个关键组件,每个组件都在不同的阶段执行特定的功能。以下是 Prometheus 的四个关键组件:
(1)Prometheus Server 是Prometheus 的核心组件,负责数据的采集、存储和查询。Prometheus Server 主要通过pull方式定期从被监控的目标(如 HTTP 服务、Exporters、Kubernetes 等)获取指标数据。它支持拉取不同类型的监控数据,如系统资源、应用状态、性能指标等。
(2)Alertmanager是报警相关组件,主要用于 Prometheus 相关监控的报警规则管理和预警。
(3)Exporters 是一些专门用于暴露监控数据的服务。它们将各种服务或系统的内部状态以 Prometheus 可解析的格式(通常是 HTTP endpoint)暴露出来。
1-常见的 Exporters:
Node Exporter:监控系统的硬件和操作系统级别的指标,如 CPU 使用率、内存消耗、磁盘空间、网络流量等。
MySQL Exporter:监控 MySQL 数据库的性能指标,如查询响应时间、连接数等。
Blackbox Exporter:用于监控网络服务的可用性,例如通过 HTTP、HTTPS、TCP 等协议进行探测。
Kubernetes Exporter:为 Kubernetes 集群提供监控数据,收集集群节点、Pod、容器等的性能指标。
2-自定义 Exporters:用户也可以编写自己的 Exporter,以暴露特定应用程序或服务的监控数据
(4)UI工具,这部分就是把 Prometheus 采集到的数据做图形化展示的,他自带了 web UI,但是效果不太好,一般都是采用 Grafana 来进行图形界面展示的。
【2】Grafana概述
Grafana 是一个开源的分析与可视化平台,广泛用于数据的可视化、监控和告警。它可以与多种数据源(如 Prometheus、InfluxDB、Elasticsearch、MySQL、PostgreSQL 等)集成,通过图表、仪表盘等方式展示数据。Grafana 主要用于实时数据监控和分析,特别适用于可视化时间序列数据。
因为我们会用Prometheus做监控采集,但是因为他自带的 web ui并不是特别友好,所以我们采用 Grafana 来当作 Prometheus 的UI,同时他还可以接入我们的 mysql 和 es 的监控。
【3】架构设计
(1)采集层(Exporter):各类中间件 / 服务专用 Exporter,采集指标暴露 HTTP 接口
(2)存储层(Prometheus):定时拉取 Exporter 指标、时序数据持久化、规则告警
(3)可视化层(Grafana):导入各类组件 Dashboard,图表展示监控
(4)告警层(AlertManager):Prometheus 告警转发,支持钉钉 / 邮件 / 企业微信
(5)扩展组件:Nacos 统一配置、Loki 日志监控(可选)
【4】各组件对应 Exporter 清单

服务器:提前发现磁盘打满、CPU / 内存瓶颈
MySQL:慢查询、连接数、锁等待、主从延迟
Redis:内存淘汰、key 过期、集群槽位、命中率
RocketMQ:消息堆积、生产消费异常、死信
ES:分片异常、查询耗时、段合并压力
Doris:StreamLoad 失败、Compaction 堆积、副本同步延迟、BE 内存溢出风险
DataX:同步吞吐量、通道阻塞、同步耗时、任务失败
SpringBoot:接口性能、GC 卡顿、线程池队列堆积、业务异常
【5】基础环境
CentOS7 / CentOS8,JDK1.8+,Docker(推荐 Docker 一键部署,规避环境依赖)
所有服务器开放对应 Exporter 端口、Prometheus 9090、Grafana 3000。
【6】部署方式
(1)容器化:Docker Compose 一键部署 Prometheus + Grafana + AlertManager
(2)二进制:服务器直接解压二进制包部署(生产离线环境)
【二】下载二进制包部署
【1】步骤一:安装Prometheus
从官网下载相应版本,安装到服务器上官网提供的是二进制版,解压就能用,不需要编译 。
Prometheus 和 node_exportor需要和你的要监控的服务器部署在一起,至少要把node_exportor部署在你想监控的服务器上。
(1)下载
下载地址:https://prometheus.io/download/

或者直接在服务器上执行
bash
wget https://github.com/prometheus/prometheus/releases/download/v3.0.1/prometheus-3.0.1.linux-amd64.tar.gz

(2)解压
下载之后就是一个压缩包了,先把他解压
bash
#解压到指定目录
tar -zxvf prometheus-3.0.1.linux-amd64.tar.gz
#移动到指定目录
mv prometheus-3.0.1.linux-amd64 /usr/local/prometheus
解压后内容如下:

接着我们给 Prometheus 创建 service 并且设置开机自启动。
(3)配置
(1)配置文件中包含三个配置块:global、rule_files和scrape_configs。
(2)global块控制 Prometheus 服务器的全局配置。我们有两个选择。第一个,scrape_interval控制 Prometheus 抓取目标的频率。您可以为单个目标覆盖它。在这种情况下,全局设置是每 15 秒抓取一次。该evaluation_interval选项控制 Prometheus 评估规则的频率。Prometheus 使用规则来创建新的时间序列并生成警报。 网络监控与管理
(3)rule_files块指定我们希望 Prometheus 服务器加载的任何规则的位置。现在我们还没有规则。
(4)最后一个块,scrape_configs控制 Prometheus 监控的资源。由于 Prometheus 还将有关自身的数据公开为 HTTP 端点,因此它可以抓取和监控自身的健康状况。在默认配置中,有一个名为 的作业prometheus,用于抓取 Prometheus 服务器公开的时间序列数据。该作业包含一个单一的、静态配置的目标,即localhost的9090端口。Prometheus期望度量在/metrics路径上的目标上可用,所以这个默认作业是通过 URL 抓取的:http://localhost:9090/metrics。
(4)编写服务启动文件并启动服务
bash
vim /usr/lib/systemd/system/prometheus.service
#配置如下
[Unit]
Description=Prometheus Monitoring System
After=network.target
[Service]
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path=/usr/local/prometheus/data/
[Install]
WantedBy=multi-user.target
启动服务
bash
systemctl daemon-reload
systemctl enable prometheus.service --now
ss -tlnp | grep :9090
LISTEN 0 128 *:9090 *:* users:(("prometheus",pid=3331,fd=6))

(5)验证
访问 http://192.168.220.128:9090

查看监控自身的数据,如分配置给Prometheus运行的内存数量

【2】步骤二:添加被监控端node_exporter
Node Exporter是帮助我们监控系统的硬件和操作系统级别的指标,如 CPU 使用率、内存消耗、磁盘空间、网络流量等的一个组件。需要单独安装。
(1)下载exporter
监控方式:
拉取:pull。监控端联系被监控端,采集数据
推送:push。被监控端主动把数据发给监控端。在prometheus中,push的方式需要额外的组件pushgateway
被监控端根据自身运行的服务,可以运行不同的exporter(被监控端安装的、可以与Prometheus通信,实现数据传递的 软件)
下载地址:https://prometheus.io/docs/instrumenting/exporters/
用的是1.8.2版本
(2)部署通用的监控exporter
在web1解压即部署
bash
tar xf node_exporter-1.8.2.linux-amd64.tar.gz
mv node_exporter-1.8.2.linux-amd64 /usr/local/node_exporter
(3)编写服务启动文件并启动服务
接着我们给 node_exporter 创建 service 并且设置开机自启动。
bash
vim /usr/lib/systemd/system/node_exporter.service
#配置如下
[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
启服务
bash
systemctl daemon-reload
systemctl enable node_exporter.service --now
ss -tlnp | grep :9100

查看启动结果,9100端口:访问 http://192.168.220.128:9100

(4)在Prometheus服务器上添加监控节点
bash
# 1. 修改配置文件,追加以下内容。特别注意缩进
vim /usr/local/prometheus/prometheus.yml
...略...
- job_name: "web1"
static_configs:
- targets: ["192.168.220.128:9100"]

重启服务
bash
# 2. 重启服务
systemctl restart prometheus.service
(5)验证
再到控制台看效果

通过9100端口访问可以看到:

【3】步骤三:安装Grafana
(1)下载
下载地址:https://grafana.com/grafana/download

直接使用命令下载
bash
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-11.4.0.linux-amd64.tar.gz
tar -zxvf grafana-enterprise-11.4.0.linux-amd64.tar.gz
mv grafana-v11.4.0 /usr/local/grafana

(2)编写服务启动文件并启动服务grafana
bash
vim /usr/lib/systemd/system/grafana_server.service
[Unit]
Description=Grafana instance
After=network.target
[Service]
User=root
Group=root
ExecStart=/usr/local/grafana/bin/grafana-server
WorkingDirectory=/usr/local/grafana
Restart=always
Environment="GF_PATHS_CONFIG=/usr/local/grafana/conf/grafana.ini"
Environment="GF_PATHS_DATA=/usr/local/grafana/data"
Environment="GF_PATHS_LOGS=/usr/local/grafana/logs"
Environment="GF_PATHS_PLUGINS=/usr/local/grafana/plugins"
[Install]
WantedBy=multi-user.target
bash
systemctl daemon-reload
#立即启动
systemctl enable grafana_server.service --now
#查看状态
systemctl status grafana_server.service

如果连接超时的话请关闭防火墙
初次使用账号和密码都是admin
访问 http://192.168.220.128:3000

(3)对接Prometheus
安装好 Grafana 之后,就可以把他和 Prometheus 连接了。
先点击 DATA SOUECES,添加一个新的数据源。

进来之后,选 Prometheus:

然后配置上你的 ip 和端口:

保存即可。

(4)配置 dashboard
添加完数据源之后,从侧边栏的 data sources进来就能找到你的配置了,然后点击他的 Build a Dashboard。

然后通过 import的方式创建:

然后起个名字,保存。

然后进入 Dashboard 的 tab,去配置这个 dashboard:

点击这个新建的 dashboard 之后,进入配置页面,然后继续import

接下来就可以添加配置信息了,这里可以用 grafana 官方给的模板:https://grafana.com/grafana/dashboards/
比如我选择这个:https://grafana.com/grafana/dashboards/1860-node-exporter-full/
那么我就在配置也页面输入:1860,然后开始导入:

然后页面就出来了:

【三】Docker Compose部署
【1】步骤 1:部署核心服务 Prometheus + Grafana + AlertManager
(1)创建目录与配置文件
bash
mkdir -p /monitor/{prometheus,grafana,alertmanager,rules}
cd /monitor
(2)准备docker-compose.yml
yml
version: '3'
services:
prometheus:
image: prom/prometheus:v2.47.0
container_name: prometheus
restart: always
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- ./rules:/etc/prometheus/rules
- ./prometheus/data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.retention.time=15d' # 数据保留15天
- '--alertmanager.url=http://alertmanager:9093'
ports:
- "9090:9090"
networks:
monitor_net:
alertmanager:
image: prom/alertmanager:v0.26.0
container_name: alertmanager
restart: always
volumes:
- ./alertmanager/alert.yml:/etc/alertmanager/alert.yml
command:
- '--config.file=/etc/alertmanager/alert.yml'
ports:
- "9093:9093"
networks:
monitor_net:
grafana:
image: grafana/grafana:10.2.0
container_name: grafana
restart: always
volumes:
- ./grafana/data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=Admin@123456
ports:
- "3000:3000"
networks:
monitor_net:
networks:
monitor_net:
(3)prometheus/prometheus.yml 主配置
yml
global:
scrape_interval: 15s # 每15s拉取一次指标
evaluation_interval: 15s # 告警规则校验周期
rule_files:
- "rules/*.yml" # 加载告警规则目录
alerting:
alertmanagers:
- static_configs:
- targets:
- alertmanager:9093
# 采集任务配置
scrape_configs:
# 1. 监控prometheus自身
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
# 2. 服务器硬件 node_exporter
- job_name: 'node'
static_configs:
- targets: ['10.0.0.1:9100','10.0.0.2:9100','10.0.0.3:9100']
# 3. MySQL mysqld_exporter
- job_name: 'mysql'
static_configs:
- targets: ['10.0.0.db1:9104','10.0.0.db2:9104']
# 4. Redis redis_exporter
- job_name: 'redis'
static_configs:
- targets: ['10.0.0.redis1:9121','10.0.0.redis2:9121']
# 5. RocketMQ exporter
- job_name: 'rocketmq'
static_configs:
- targets: ['10.0.0.mq:5557']
# 6. ES exporter
- job_name: 'es'
static_configs:
- targets: ['10.0.0.es:9114']
# 7. Doris FE 内置metrics
- job_name: 'doris-fe'
metrics_path: '/metrics'
static_configs:
- targets: ['10.0.0.fe1:8030','10.0.0.fe2:8030','10.0.0.fe3:8030']
# 8. Doris BE 内置metrics
- job_name: 'doris-be'
metrics_path: '/metrics'
static_configs:
- targets: ['10.0.0.be1:8040','10.0.0.be2:8040','10.0.0.be3:8040']
# 9. SpringBoot业务服务(自动发现可改用consul/nacos服务发现)
- job_name: 'spring-boot-service'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['10.0.0.api1:8080','10.0.0.api2:8080']
# 10. DataX集群 jmx_exporter
- job_name: 'datax'
static_configs:
- targets: ['10.0.0.datax1:9404','10.0.0.datax2:9404','10.0.0.datax3:9404']
(4)alertmanager/alert.yml 告警推送配置(钉钉示例)
yml
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 5m
receiver: 'dingtalk'
receivers:
- name: 'dingtalk'
webhook_configs:
- url: 'https://oapi.dingtalk.com/robot/send?access_token=xxx'
send_resolved: true
(5)启动容器
bash
docker-compose up -d
访问地址:
Prometheus:http:// 服务器 IP:9090
Grafana:http:// 服务器 IP:3000 账号 admin / Admin@123456
(6)Grafana 初始化配置
左侧 Connections -> Data sources -> Add data source,选择 Prometheus
URL 填写 http://prometheus:9090,点击 Save & test
导入各组件官方 Dashboard ID
【2】步骤 2:逐个部署各类组件 Exporter 采集指标
(1)服务器硬件监控 node_exporter(所有机器部署)
作用:采集 CPU、内存、磁盘、网络、负载、文件句柄
bash
# 二进制部署
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
tar -zxvf node_exporter-1.8.2.linux-amd64.tar.gz
cd node_exporter-1.8.2.linux-amd64
nohup ./node_exporter --web.listen-address=:9100 > node.log 2>&1 &
Grafana Dashboard ID:1860
(2)MySQL 集群监控 mysqld_exporter
(1)MySQL 创建监控账号
sql
CREATE USER 'exporter'@'%' IDENTIFIED BY 'Exporter@123';
GRANT PROCESS,REPLICATION CLIENT,SELECT ON *.* TO 'exporter'@'%';
FLUSH PRIVILEGES;
(2)启动 mysqld_exporter
bash
export DATA_SOURCE_NAME="exporter:Exporter@123@(127.0.0.1:3306)/"
nohup ./mysqld_exporter --web.listen-address=:9104 > mysql.log 2>&1 &
Grafana Dashboard ID:7362
(3)Redis 集群 redis_exporter
bash
# 连接单节点/集群
nohup ./redis_exporter redis://@127.0.0.1:6379 --web.listen-address=:9121 > redis.log 2>&1 &
Dashboard ID:763
(4)Elasticsearch es_exporter
bash
nohup ./elasticsearch_exporter --es.uri=http://127.0.0.1:9200 --web.listen-address=:9114 > es.log 2>&1 &
Dashboard ID:7849
(5)RocketMQ rocketmq-exporter
下载编译 rocketmq-exporter
配置 namesrv 地址,启动端口 5557
bash
nohup java -jar rocketmq-exporter-0.0.2.jar > mq.log 2>&1 &
监控指标:消息堆积、生产 TPS、消费 TPS、死信队列
Dashboard ID:16767
(6)Doris 集群(无需额外 Exporter,内置 Metrics)
Doris FE、BE 原生暴露 /metrics 接口
FE:http://fe_ip:8030/metrics
BE:http://be_ip:8040/metrics
监控核心指标:
FE:元数据加载耗时、StreamLoad 任务数量、导入失败数
BE:Compaction 堆积、磁盘 IO、副本同步延迟、内存占用、RowSet 数量
Grafana Doris 专用 Dashboard:开源搜索 Apache Doris Dashboard
(7)SpringBoot 服务集群监控(Actuator + micrometer)
(1)引入 Maven 依赖
xml
<!-- actuator暴露监控端点 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- prometheus指标输出 -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
(2)application.yml 配置
yml
management:
endpoints:
web:
exposure:
include: health,prometheus,info,metrics
metrics:
export:
prometheus:
enabled: true
(3)指标地址
http://ip:port/actuator/prometheus
监控指标:JVM 内存、GC、接口 QPS、接口耗时、线程池、异常次数
SpringBoot Dashboard ID:12856
(8)DataX 集群监控(JMX Exporter)
DataX 是 Java 进程,使用jmx_prometheus_javaagent采集 JVM、线程、通道并发、读写耗时
(1)启动脚本改造 datax.py
bash
# 启动时挂载javaagent
JAVA_OPTS="-javaagent:/opt/jmx/jmx_prometheus_javaagent-0.19.0.jar=9404:/opt/jmx/config.yaml"
(2) jmx 采集配置
采集指标:堆内存、GC、线程总数、channel 读写吞吐量、等待队列堆积
无官方 Dashboard,自行组合 JVM + 自定义 DataX 业务指标图表
【3】步骤 3:配置告警规则(rules 目录新建各类 yml)
示例 rules/all-alert.yml
yml
groups:
- name: server-alert
rules:
# 服务器CPU持续80%告警
- alert: HighCpu
expr: avg(irate(node_cpu_seconds_total{mode!="idle"}[1m])) by (instance) > 0.8
for: 2m
labels:
severity: warning
annotations:
summary: "服务器CPU过高 {{instance}}"
- name: mysql-alert
rules:
# MySQL连接数满
- alert: MysqlConnectionsHigh
expr: mysql_global_status_threads_connected / mysql_global_variables_max_connections > 0.8
for: 1m
labels:
severity: critical
- name: doris-alert
rules:
# Doris Compaction堆积告警
- alert: DorisCompactionStack
expr: doris_be_cumulative_compaction_pending_rows > 1000000
for: 1m
labels:
severity: warning
- name: spring-service
rules:
# 服务接口5xx错误率大于1%
- alert: Service5xxError
expr: sum(rate(http_server_requests_seconds_count{status=~"5.."}[1m])) by (instance) / sum(rate(http_server_requests_seconds_count[1m])) by (instance) > 0.01
for: 1m
labels:
severity: critical
修改 prometheus.yml 加载 rules 目录,重启 Prometheus 生效。
【4】步骤 4:Grafana 可视化完整操作
(1)导入 Dashboard
左侧 Dashboards -> Import,输入对应 ID,选择 Prometheus 数据源
(2)面板分层规划
基础设施大盘:服务器 CPU / 内存 / 磁盘
中间件大盘:MySQL/Redis/ES/RocketMQ
Doris 专属大盘:导入吞吐量、Compaction、副本同步、查询耗时
DataX 同步大盘:通道并发、读写行数、同步耗时、失败任务
SpringBoot 业务服务大盘:接口 QPS、GC、JVM、线程池、异常
(3)Grafana 内置告警:可单独配置图表阈值告警,联动钉钉
【四】其他监控
【1】mysql
(1)mysql新建用户
安全起见,对 MySQL 服务监控时不要使用管理用户建立连接,只要能够获取到监测指标即可,因此此处建议新增专用的有限权限的用户进行采集:
sql
create user 'exporter'@'%' identified by '123456';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';
flush privileges;
(2)安装mysqld-exporter
url下载
bash
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
tar -zxvf mysqld_exporter-0.14.0.linux-amd64.tar.gz
mv mysqld_exporter-0.14.0.linux-amd64 /usr/local/mysqld_exporter

使用docker安装
bash
docker run -d \
--name mysqld-exporter \
-p 9104:9104 \
--restart always \
-e DATA_SOURCE_NAME="exporter:123456@(192.168.220.128:3306)/" \
prom/mysqld-exporter
DATA_SOURCE_NAME="账号:密码@(MySQLIP:端口)/"
192.168.1.100:你的 MySQL 服务地址(不能用 127.0.0.1,容器内localhost代表自身)
如果 MySQL 有数据库:末尾可加 /库名,不填默认全实例监控
访问:http://192.168.220.128:9104/metrics
页面出现大量 mysql_* 指标即成功;
如果报错 Access denied:账号密码错误 / MySQL 未授权外网访问。
(3)编写服务启动文件并启动服务
接着我们给 node_exporter 创建 service 并且设置开机自启动。
首先创建mysql的配置信息文件
bash
cd /usr/local/mysqld_exporter
# 创建一个文件
vim localhost_db.cnf
# 输入我们刚创建好的用户名及密码
[client]
user=nfturbo
password=NFTurbo666
host=192.168.220.128
port=3306
bash
vim /usr/lib/systemd/system/mysqld_exporter.service
#配置如下
[Unit]
Description=mysqld_exporter
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/localhost_db.cnf --web.listen-address=192.168.220.128:9104
Restart=on-failure
[Install]
WantedBy=multi-user.target
测试
bash
./mysqld_exporter --config.my-cnf=localhost_db.cnf

启服务
bash
# 重载+自启+启动
systemctl daemon-reload
systemctl enable mysqld_exporter.service --now
# 验证端口
ss -tlnp | grep :9104
# 查看实时日志排错
journalctl -u mysqld_exporter -f

验证mysqld-exporter安装结果
访问http://192.168.220.128:9104/metrics

(3)修改Prometheus配置,添加监控节点
bash
# 1. 修改配置文件,追加以下内容。特别注意缩进
vim /usr/local/prometheus/prometheus.yml
...略...
- job_name: 'mysql'
scrape_interval: 15s
static_configs:
- targets: ['192.168.220.128:9104'] # mysqld-exporter宿主机IP:9105
metrics_path: '/metrics'
修改后重启 Prometheus,在 Prometheus Targets 页面查看 mysql job 是否 UP。
重启服务
bash
# 2. 重启服务
systemctl restart prometheus.service

(5)配置Grafana对主机状态的可视化
浏览器访问http://192.168.220.128:3000。
使用模板:7362

导入以后


【2】redis
(1)安装redis-exporter
url下载
bash
# 下载最新稳定版(0.15.0,可替换版本号)
wget https://github.com/oliver006/redis_exporter/releases/download/v0.15.0/redis_exporter-v0.15.0.linux-amd64.tar.gz
# 解压
tar -zxvf redis_exporter-v0.15.0.linux-amd64.tar.gz
# 移动到统一目录
mv redis_exporter-v0.15.0.linux-amd64 /usr/local/redis_exporter
环境变量传入密码 REDIS_PASSWORD
REDIS_ADDR 填写任意一个集群节点即可自动发现全集群
bash
docker run -d \
--name redis-exporter \
-p 9121:9121 \
--restart always \
-e REDIS_ADDR="192.168.1.100:6379" \
-e REDIS_PASSWORD="Redis@123456" \
oliver006/redis_exporter
验证指标是否正常采集
出现大量 redis_* 指标代表正常;
报错连接失败检查 Redis IP、端口、密码、防火墙 6379 端口。
(2)编写服务启动文件并启动服务
接着我们给 node_exporter 创建 service 并且设置开机自启动。
bash
vim /usr/lib/systemd/system/redis_exporter.service
#配置如下
[Unit]
Description=Redis Exporter For Prometheus
After=network.target
[Service]
Type=simple
# 注入Redis密码环境变量
Environment=REDIS_PASSWORD=NFTurbo666
ExecStart=/usr/local/redis_exporter/redis_exporter \
--web.listen-address=192.168.220.128:9121 \
--redis.addr=192.168.220.128:6379
Restart=on-failure
[Install]
WantedBy=multi-user.target
启服务
bash
# 重载+自启+启动
systemctl daemon-reload
systemctl enable redis_exporter.service --now
# 查看运行状态
systemctl status redis_exporter
# 验证端口
ss -tlnp | grep :9121
# 查看实时日志排错
journalctl -u redis_exporter -f
验证mysqld-exporter安装结果
访问http://192.168.220.128:9121/metrics
(2)修改Prometheus配置,添加监控节点
单 Redis 实例(固定地址)
yml
scrape_configs:
- job_name: "redis"
static_configs:
- targets: ["192.168.220.128:9121"]
单 exporter 监控多 Redis(推荐)
yml
scrape_configs:
- job_name: "redis_multi"
static_configs:
- targets:
- redis://192.168.1.100:6379
- redis://192.168.1.101:6379
- redis://password@192.168.1.102:6379
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.1.100:9121 # redis-exporter地址
修改配置后重载 Prometheus
去 Status → Targets 查看 redis 任务是否 UP。
(3)Grafana Redis 推荐面板
Dashboard ID:7647,完美适配 redis_exporter 所有指标,包含:
内存使用、键总数、过期键、命中率、客户端连接、持久化 RDB/AOF、命令耗时、集群槽位。