当前位置: 首页 > news >正文

@Prometheus 监控-MySQL (Mysqld Exporter) - 教程

**Prometheus 监控 MySQL **

1. 目标


2. 环境准备

2.1 所需组件
组件作用安装位置
Prometheus Server指标采集与存储监控服务器
mysqld_exporter暴露 MySQL 指标MySQL 服务器
Grafana数据可视化监控服务器
Alertmanager告警通知管理监控服务器
2.2 权限要求

3. 部署 mysqld_exporter

3.1 下载与安装
# 下载最新版 (替换版本号)
VERSION="0.15.1"
wget https://github.com/prometheus/mysqld_exporter/releases/download/v${VERSION}/mysqld_exporter-${VERSION}.linux-amd64.tar.gz
tar xvf mysqld_exporter-${VERSION}.linux-amd64.tar.gz
sudo mv mysqld_exporter-${VERSION}.linux-amd64/mysqld_exporter /usr/local/bin/
3.2 创建配置文件

创建 .my.cnf 文件存储数据库连接信息:

sudo tee /etc/.mysqld_exporter.cnf <<
EOF
[client]
user=exporter
password=YourStrongPassword
host=localhost
port=3306
EOF
sudo chmod 600 /etc/.mysqld_exporter.cnf # 限制权限
3.3 创建 Systemd 服务

/etc/systemd/system/mysqld_exporter.service

[Unit]
Description=MySQL Prometheus Exporter
After=network.target
[Service]
User=mysqld_exporter
ExecStart=/usr/local/bin/mysqld_exporter \
--config.my-cnf=/etc/.mysqld_exporter.cnf \
--collect.global_status \
--collect.info_schema.innodb_metrics \
--collect.slave_status \
--collect.info_schema.processlist
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start mysqld_exporter
sudo systemctl enable mysqld_exporter
3.4 验证 Exporter

访问指标接口:
curl http://localhost:9104/metrics
应输出包含 mysql_ 前缀的指标。


4. 配置 Prometheus

4.1 添加 Job 到 prometheus.yml
scrape_configs:
- job_name: 'mysql'
static_configs:
- targets: ['mysql-server-ip:9104'] # Exporter 地址
relabel_configs:
- source_labels: [__address__]
target_label: instance
replacement: 'mysql-primary' # 实例标识
4.2 重载 Prometheus
curl -X POST http://localhost:9090/-/reload # 或重启服务

5. 核心监控指标说明

指标名称含义告警建议
mysql_global_status_threads_connected当前连接数> 80% max_connections
mysql_global_status_threads_running活跃连接数持续 > 100
mysql_global_status_slow_queries慢查询计数短时间内突增
mysql_global_variables_max_connections最大连接数规划容量参考
mysql_slave_status_slave_io_running主从 IO 线程状态≠ 1 (异常)
mysql_info_schema_innodb_row_lock_time_avg平均行锁等待时间> 500ms

6. 告警规则配置

6.1 创建告警规则文件

/etc/prometheus/rules/mysql_alerts.yml

groups:
- name: MySQL-Alerts
rules:
- alert: MySQLHighConnections
expr: mysql_global_status_threads_connected / mysql_global_variables_max_connections * 100 > 80
for: 5m
labels:
severity: warning
annotations:
summary: "MySQL 高连接数 ({{ $value }}%)"
description: "实例 {{ $labels.instance }} 连接数超过 80% 限制"
- alert: MySQLReplicationFailure
expr: mysql_slave_status_slave_io_running != 1 or mysql_slave_status_slave_sql_running != 1
for: 1m
labels:
severity: critical
annotations:
summary: "MySQL 复制中断 ({{ $labels.instance }})"
6.2 在 prometheus.yml 中加载规则
rule_files:
- "/etc/prometheus/rules/mysql_alerts.yml"

7. Grafana 仪表盘配置

  1. 导入官方 Dashboard:
    • ID 7362 (MySQL Overview)
  2. 配置 Prometheus 为数据源。

8. 维护与优化

8.1 定期检查
  • 验证 Exporter 状态:systemctl status mysqld_exporter
  • 检查指标收集延迟:prometheus_target_interval_length_seconds
  • 审核 MySQL 用户权限(每年至少一次)。
8.2 安全加固
8.3 性能调整
  • 限制采集的指标(减少负载):
    --no-collect.info_schema.tables # 禁用表统计
  • 调整 Prometheus 抓取间隔(默认 15s):
    scrape_interval: 30s # prometheus.yml

9. 故障排查

9.1 Exporter 无数据
9.2 Prometheus 未抓取
  • 访问 http://prom-server:9090/targets 检查 Target 状态。
  • 验证网络连通性:telnet mysql-server-ip 9104

10. 附录


按照此文档,可实现 MySQL 的全面监控与告警,确保数据库稳定性。部署后需通过压力测试验证监控有效性,并根据业务特点调整告警阈值。

http://www.zskr.cn/news/16553.html

相关文章:

  • 终于知道酷睿Ultra X什么意思了!满血12核心核显
  • [Python] struct.unpack() 用法详解 - 指南
  • CT5120 Intro to Natural Lang. Processing Lab # 4. Text Classification
  • 迅速了解GO+ElasticSearch
  • 荷兰青少年通过Telegram被招募,涉嫌参与俄罗斯支持的黑客活动
  • 小代码使用npm包的方法
  • 全源最短路 Johnson算法
  • 手写Promise核心代码
  • Java基础 Day28 完结篇 - 实践
  • InfinityFree教程 ——免费搭建属于你的网站
  • 深入解析:npm、yarn幽灵依赖问题
  • 10.6 模考 T4(QOJ 1836)
  • 实用指南:【Node.js 深度解析】npm install 遭遇:npm ERR! code CERT_HAS_EXPIRED 错误的终极解决方案
  • Windows漏洞利用技巧:虚拟内存访问陷阱(2025更新)
  • 完整教程:从虚拟化到云原生与Serverless
  • 无痕检测是否注册iMessage服务,iMessages数据筛选,iMessage蓝号检测完美实现
  • 递推求解逆元
  • 笔记:寻找适合自己的简历工具(YAMLResume)
  • 用Google的DeepResearch+音频生成功能生成自己感兴趣内容的Podcast
  • 计算能力的重要性:从内存配置到进程迁移的未来展望
  • 实用指南:vulkan游戏引擎renderer_frontend实现
  • 进程工具类 - C#小函数类推荐
  • hetao 国庆
  • [MCP] StreamableHTTPServer
  • 罗技G102螺丝型号
  • 详细介绍:深入剖析C#构造函数执行:基类调用、初始化顺序与访问控制
  • 大数求余
  • QBXT2025S刷题 Day5题
  • Linux 中 m、mm、mmm 函数和 make 的区别 - 详解
  • 详细介绍:学习STC51单片机27(芯片为STC89C52RCRC)