【Prometheus & Grafana】搭建可视化监控平台

【Prometheus & Grafana】搭建可视化监控平台

【一】介绍

【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

验证指标是否正常采集

http://宿主机IP:9121/metrics

出现大量 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、命令耗时、集群槽位。

相关推荐
维C°14 小时前
Grafana 上时间筛选
grafana
chen_ke_hao1 天前
Prometheus + Grafana监控平台-显卡集群监控
grafana·prometheus
SRETalk10 天前
Zabbix、Prometheus、Grafana、Nightingale,四个监控如何选型?
zabbix·grafana·prometheus·nightingale
虚无境17 天前
如何编写一个SpringBoot项目告警推送的Starter
java·prometheus·webhook
睡不醒男孩03082318 天前
云原生运维实战:高并发架构下的云原生可观测性、韧性降级与自动化干预体系
数据库·kubernetes·高并发·prometheus·devops·sre·缓存调优
心之伊始20 天前
Spring Boot Actuator + Micrometer 实战:自定义业务指标并接入 Prometheus 观测接口耗时
java·spring boot·prometheus·actuator·micrometer
何中应20 天前
Grafana面板没有数据问题排查
linux·grafana·prometheus
爱吃龙利鱼20 天前
K8s 监控实战:victoria-metrics-k8s-stack 高可用部署,资源占用直降 70%,比 Prometheus 省 5 倍磁盘
docker·kubernetes·prometheus
就改了20 天前
微服务指标监控一站式搭建:Prometheus抓取+Grafana大屏展示详解
微服务·grafana·prometheus