目录
[3.1 下载](#3.1 下载)
[3.2 安装](#3.2 安装)
[3.3 配置systemd启动方式](#3.3 配置systemd启动方式)
[3.4 设置开机自启动](#3.4 设置开机自启动)
[3.5 验证是否成功](#3.5 验证是否成功)
[4.1 下载](#4.1 下载)
[4.2 安装](#4.2 安装)
[4.3 验证服务的使用](#4.3 验证服务的使用)
[5.1 下载](#5.1 下载)
[5.2 安装](#5.2 安装)
[5.3 配置systemd服务](#5.3 配置systemd服务)
[5.4 设置开机自启](#5.4 设置开机自启)
[5.5 验证服务是否成功](#5.5 验证服务是否成功)
[5.6 配置Prometheus](#5.6 配置Prometheus)
[5.6.1 添加node_exporter的绑定](#5.6.1 添加node_exporter的绑定)
[5.6.2 重启prometheus](#5.6.2 重启prometheus)
[5.7 在Grafana中添加数据源](#5.7 在Grafana中添加数据源)
[5.7.1 添加数据源](#5.7.1 添加数据源)
[5.7.2 填写prometheus地址](#5.7.2 填写prometheus地址)
[5.7.3 选择适合的仪表盘](#5.7.3 选择适合的仪表盘)
[5.7.4 查看仪表盘](#5.7.4 查看仪表盘)
[5.7.5 查看Prometheus](#5.7.5 查看Prometheus)
[6.1 下载](#6.1 下载)
[6.2 安装](#6.2 安装)
[6.3 配置系统服务](#6.3 配置系统服务)
[6.4 启动服务](#6.4 启动服务)
[6.5 配置Prometheus](#6.5 配置Prometheus)
[6.6 配置grafana](#6.6 配置grafana)
[6.6.1 创建Dashboard](#6.6.1 创建Dashboard)
[6.6.2 查看展示效果](#6.6.2 查看展示效果)
[6.7 查看Prometheus](#6.7 查看Prometheus)
[7.1 整体架构图](#7.1 整体架构图)
[7.2 各个组件的作用](#7.2 各个组件的作用)
[7.2.1 node exporter(端口9100)](#7.2.1 node exporter(端口9100))
[7.2.2 mysqld_exporter(端口9104)](#7.2.2 mysqld_exporter(端口9104))
[7.2.3 Prometheus(端口9090)](#7.2.3 Prometheus(端口9090))
[7.2.4 Grafana(端口3000)](#7.2.4 Grafana(端口3000))
[7.2.5 Alertmanager(通常端口9093)](#7.2.5 Alertmanager(通常端口9093))
[7.3 数据流向详解](#7.3 数据流向详解)
[7.3.1 正常监控数据流](#7.3.1 正常监控数据流)
[7.3.2 告警数据流](#7.3.2 告警数据流)
[7.4 dashboard模板](#7.4 dashboard模板)
[7.3.1 MySQL Overview(ID:7362)](#7.3.1 MySQL Overview(ID:7362))
[7.3.2 MySQL Prometheus(ID:11323)](#7.3.2 MySQL Prometheus(ID:11323))
[7.3.3 Node Exporter Server Metrics(ID:11074)](#7.3.3 Node Exporter Server Metrics(ID:11074))
[7.3.4 MySQL Replication(ID:12587)](#7.3.4 MySQL Replication(ID:12587))
[7.3.5 MySQL InnoDB Metrics(ID:4215)](#7.3.5 MySQL InnoDB Metrics(ID:4215))
[7.3.6 MySQL Database Performance(ID:13083)](#7.3.6 MySQL Database Performance(ID:13083))
[7.3.7 MySQL by Zabbix(ID:10993)](#7.3.7 MySQL by Zabbix(ID:10993))
一、环境介绍
|--------|----------------|--------------------------------------------------|
| 主机     | IP地址           | 组件                                               |
| master | 192.168.157.80 | node_exporter/mysqld_exporter                    |
| slave  | 192.168.157.81 | node_exporter/mysqld_exporter                    |
| slave  | 192.168.157.82 | node_exporter/mysqld_exporter/prometheus/grafana |
主从复制的搭建,就不在此多叙述了,可移步:基于mysql8.0.27部署1主2从的MHA集群_mysql8 搭建mha-CSDN博客
二、注意事项
时间同步是必做:
#master
# 安装ntp服务(用于提供时间同步源)
yum install -y ntp
# 编辑ntp配置文件,设置本地为时钟源
vim /etc/ntp.conf
# 在文件末尾添加以下两行(按i进入编辑模式,添加后按esc,输入:wq保存退出)
# server 127.127.157.0  # 本地时钟源,157对应网段192.168.157.x
# fudge 127.127.157.0 stratum 8  # 时间层级设为8(范围1-15,层级越低越优先)
# 启动ntp服务并设置开机自启
systemctl start ntpd
systemctl enable ntpd  # 确保重启后服务自动运行
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#slave
# 安装ntp和ntpdate(ntpdate用于主动同步时间)
yum install -y ntp ntpdate
# 启动ntp服务并设置开机自启
systemctl start ntpd
systemctl enable ntpd
# 手动同步主库时间(立即执行一次,确保当前时间对齐)
/usr/sbin/ntpdate 192.168.157.80  # 同步主库80的时间
# 设置定时任务,每30分钟自动同步一次主库时间
crontab -e  # 编辑定时任务(按i进入编辑模式,添加后按esc,输入:wq保存退出)
# 添加以下内容:
# */30 * * * * /usr/sbin/ntpdate 192.168.157.80  # 每30分钟执行一次时间同步三、安装Prometheus
3.1 下载
https://prometheus.io/download/

3.2 安装
tar -zxvf prometheus-3.7.2.linux-amd64.tar.gz	
cp -R prometheus-3.7.2.linux-amd64 /usr/local/prometheus
vim /usr/lib/systemd/system/prometheus.service3.3 配置systemd启动方式
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/prometheus
ExecStart=/usr/local/prometheus/prometheus 
Restart=on-failure
[Install]
WantedBy=multi-user.target3.4 设置开机自启动
systemctl daemon-reload
systemctl enable prometheus.service
systemctl start prometheus.service3.5 验证是否成功
在浏览器中输入192.168.157.82:9090

四、安装Grafana
4.1 下载
https://grafana.com/grafana/download
下载地址:https://dl.grafana.com/enterprise/release/grafana-enterprise-11.0.0-1.x86_64.rpm
4.2 安装
yum install -y grafana-enterprise-11.0.0-1.x86_64.rpm
# 开机启动
systemctl enable grafana-server
# 启动
systemctl start grafana-server4.3 验证服务的使用
地址:http://192.168.157.82:3000/
默认密码:admin/admin
登录后要求修改原始密码

五、安装服务器监控node_exporter
5.1 下载

5.2 安装
tar -zxvf node_exporter-1.10.2.linux-amd64.tar.gz
cp -R node_exporter-1.10.2.linux-amd64 /usr/local/node_exporter5.3 配置systemd服务
vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target5.4 设置开机自启
systemctl daemon-reload
systemctl enable node_exporter.service
systemctl start node_exporter.service
# 查看服务状态
systemctl status node_exporter.service5.5 验证服务是否成功
在浏览器输入IP:9100
注:node_exporter在三台服务器上均安装了,所以均需验证

5.6 配置Prometheus
5.6.1 添加node_exporter的绑定

global:
  scrape_interval: 15s  # 全局默认拉取间隔,job级配置会覆盖此值
  evaluation_interval: 15s
scrape_configs:
  # MySQL主从节点的MySQL指标(MySQL Exporter,端口9104)
  - job_name: 'mysql-master-slave'
    scrape_interval: 5s  # 5秒一次高频采集MySQL指标
    static_configs:
      - targets: ['192.168.157.80:9104', '192.168.157.81:9104', '192.168.157.82:9104']  # 主+2从
    # 自动标记主从角色(方便Grafana筛选)
    relabel_configs:
      - source_labels: [__address__]
        regex: '192.168.157.80:9104'  # 匹配主库IP
        target_label: 'mysql_role'
        replacement: 'master'  # 标记为主库
      - source_labels: [__address__]
        regex: '192.168.157.81:9104|192.168.157.82:9104'  # 匹配两个从库
        target_label: 'mysql_role'
        replacement: 'slave'   # 标记为从库
  # 服务器基础指标(Node Exporter,端口9100)
  - job_name: 'nodes'
    scrape_interval: 5s  # 5秒一次采集服务器指标
    static_configs:
      - targets: ['192.168.157.80:9100', '192.168.157.81:9100', '192.168.157.82:9100']  # 主+2从
    # 自动标记服务器对应的MySQL角色
    relabel_configs:
      - source_labels: [__address__]
        regex: '192.168.157.80:9100'
        target_label: 'mysql_role'
        replacement: 'master'
      - source_labels: [__address__]
        regex: '192.168.157.81:9100|192.168.157.82:9100'
        target_label: 'mysql_role'
        replacement: 'slave'5.6.2 重启prometheus
systemctl restart prometheus5.7 在Grafana中添加数据源
5.7.1 添加数据源


5.7.2 填写prometheus地址
√ 可以填写localhost的情况:
| 场景 | 说明 | 架构图 | 
|---|---|---|
| 1. Grafana和Prometheus在同一台服务器 | 最常用的场景,所有组件部署在一台机器 | [Grafana] ←→ [Prometheus](同一台服务器) | 
| 2. 使用Docker Compose部署 | 在docker网络内使用服务名访问 | [Grafana容器] ←→ [prometheus:9090] | 
| 3. 开发测试环境 | 本地开发时简化配置 | 本地环境 | 
× 不可以填写localhost的情况:
| 场景 | 问题 | 正确写法 | 
|---|---|---|
| Grafana和Prometheus在不同服务器 | localhost指向Grafana自身,找不到Prometheus | http://192.168.157.XXX:9090 | 
| 使用容器且未配置网络 | 容器内的localhost是容器自己 | http://宿主机IP:9090或服务名 | 
| 生产环境多实例部署 | 需要明确的网络可达性 | 使用内部域名或IP | 


5.7.3 选择适合的仪表盘


5.7.4 查看仪表盘
当然我们可以选择合适的仪表盘展示数据


5.7.5 查看Prometheus
可以看见nodes全是up,但在此之前,应该都是down


六、安装MySQL监控mysqld_exporter
6.1 下载

6.2 安装
tar -zxvf mysqld_exporter-0.18.0.linux-amd64.tar.gz
mv mysqld_exporter-0.18.0.linux-amd64 /usr/local/mysql_exporter
cd /usr/local/mysql_exporter
#配置数据库的信息
vim /usr/local/mysql_exporter/my-exporter.cnf
[client]
user=root
password=xxxx   #填写自己的密码
host=localhost
port=33066.3 配置系统服务
vim /etc/systemd/system/mysqld_exporter.service
[Unit]
Description=mysqld_exporter
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/mysql_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysql_exporter/my-exporter.cnf
Restart=on-failure
[Install]
WantedBy=multi-user.target6.4 启动服务
# 重新加载系统配置
systemctl daemon-reload
# 开机启动
systemctl enable mysqld_exporter.service
# 启动服务
systemctl start mysqld_exporter
# 查看状态
systemctl status mysqld_exporter6.5 配置Prometheus

vim /usr/local/prometheus/prometheus.yml
- job_name: 'mysql_exporter'
    static_configs:
      - labels:
          instance: master:3306
        targets:
          - 192.168.157.80:9104  # 主库MySQL Exporter地址
      - labels:
          instance: slave1:3306
        targets:
          - 192.168.157.81:9104  # 从库81 MySQL Exporter地址
      - labels:
          instance: slave2:3306
        targets:
          - 192.168.157.82:9104  # 从库82 MySQL Exporter地址6.6 配置grafana
6.6.1 创建Dashboard

6.6.2 查看展示效果

6.7 查看Prometheus
此时可以看见,mysql-master-slave已经是up

七、一些小知识
7.1 整体架构图

7.2 各个组件的作用
7.2.1 node exporter(端口9100)
作用:操作系统指标采集器
- 监控服务器硬件和OS层面
- 采集CPU,内存,磁盘,网络等基础资源使用情况
- 每台服务器都需要部署应该实例
关键监控指标:
- node_cpu_seconds_total:CPU使用率
- node_memory_MemFree_bytes:内存使用量
- node_disk_io_time_seconds:磁盘IO
- node_filesystem_size_bytes:磁盘空间
7.2.2 mysqld_exporter(端口9104)
作用:MySQL数据库指标采集器
- 专门采集MySQL内部性能指标和状态信息
- 通过执行show status,show variables等命令获取数据
- 监控连接数,查询性能,复制状态等
关键监控指标:
- mysql_global_status_connections - 数据库连接数
- mysql_slave_status_slave_io_running - 主从复制IO线程状态
- mysql_global_status_questions - 查询统计
- mysql_global_status_innodb_buffer_pool_reads - InnoDB缓冲池命中率
7.2.3 Prometheus(端口9090)
作用:监控数据中枢-收集,存储,查询
- 数据采集:定期从exporters拉取(pull)指标数据
- 数据存储:时间序列数据库(TSDB),高效存储历史数据
- 数据查询:提供PromQL查询语言,支持复杂数据分析
- 服务发现:自动发现监控目标
- 告警规则:定义监控阈值和告警条件
7.2.4 Grafana(端口3000)
作用:数据可视化平台-监控仪表盘
- 数据展示:将Prometheus中的指标数据转化为直观的图表
- 仪表板:预置或自定义监控面板,展示关键指标
- 多数据源:支持Prometheus,Zabbix等多种数据源
- 告警展示:在界面上显示触发的告警
- 权限管理,多用户访问控制
典型仪表板:
- 系统资源监控(CPU,内存,磁盘)
- MySQL性能监控(QPS,TPS,连接数)
- 主从复制状态监控
- MHA集群状态监控
7.2.5 Alertmanager(通常端口9093)
作用:告警管理中枢-去重,分组,路由通知
- 告警处理:接收Prometheus发送的告警
- 告警去重:避免重复告警骚扰
- 告警分组:将相关告警合并通知
- 静默管理:维护期间屏蔽告警
- 多路通知:支持邮件,钉钉,微信等
7.3 数据流向详解
7.3.1 正常监控数据流

7.3.2 告警数据流

7.4 dashboard模板
7.3.1 MySQL Overview(ID:7362)
最适合初学者的MySQL监控模板
- 
特点:全面的MySQL基础监控,开箱即用 
- 
监控内容: - 
连接数、查询性能、流量统计 
- 
InnoDB缓冲池、锁状态、临时表 
- 
主从复制状态、慢查询 
 
- 
- 
适用场景:通用MySQL监控,适合大多数环境 
7.3.2 MySQL Prometheus(ID:11323)
现代化监控模板
- 
特点:专为Prometheus + MySQLD Exporter设计 
- 
监控内容: - 
实时QPS/TPS监控 
- 
连接池使用情况 
- 
二进制日志统计 
 
- 
- 
适用场景:使用Prometheus的现代监控体系 
7.3.3 Node Exporter Server Metrics(ID:11074)
简洁版系统监控
- 
特点:界面更简洁,重点突出关键指标 
- 
监控内容: - 
核心系统指标(CPU、内存、磁盘、网络) 
- 
关键性能指标汇总 
 
- 
- 
适用场景:快速查看系统健康状态 
7.3.4 MySQL Replication(ID:12587)
专注主从复制监控
- 
特点:深度监控复制链路的每个环节 
- 
监控内容: - 
复制延迟趋势图 
- 
IO/SQL线程状态监控 
- 
二进制日志位置跟踪 
- 
复制错误统计 
 
- 
- 
适用场景:主从复制环境、MHA集群 
7.3.5 MySQL InnoDB Metrics(ID:4215)
存储引擎深度监控
- 
特点:专注InnoDB性能指标 
- 
监控内容: - 
缓冲池命中率、读写效率 
- 
行锁、死锁统计 
- 
日志写入性能 
 
- 
- 
适用场景:InnoDB性能优化 
7.3.6 MySQL Database Performance(ID:13083)
数据库性能分析专家
- 
特点:面向DBA的深度性能分析 
- 
监控内容: - 
查询模式分析 
- 
索引效率统计 
- 
资源等待事件 
 
- 
- 
适用场景:性能瓶颈诊断 
7.3.7 MySQL by Zabbix(ID:10993)
从Zabbix迁移用户的友好选择
- 
特点:模仿Zabbix风格的监控界面 
- 
监控内容: - 
类似Zabbix的监控项组织方式 
- 
传统监控指标布局 
 
- 
- 
适用场景:从Zabbix切换到Prometheus的用户