Prometheus 监控 MySQL 快速开始
本文介绍如何使用 dbbot 快速搭建:Prometheus + Grafana + Alertmanager,并接入 MySQL 与主机 exporter。
1. 环境示例
| IP 地址 | HOSTNAME | 部署组件 |
|---|---|---|
| 192.168.199.131 | 192-168-199-131 | MySQL 主库、node_exporter、mysqld_exporter、dbbot |
| 192.168.199.132 | 192-168-199-132 | MySQL 从库、node_exporter、mysqld_exporter |
| 192.168.199.133 | 192-168-199-133 | MySQL 从库、node_exporter、mysqld_exporter |
| 192.168.199.161 | 192-168-199-161 | Prometheus、Grafana、Alertmanager |
2. 前置准备
- 先完成 MySQL 部署(可参考 MySQL 部署快速开始)。
- 确认 dbbot 控制节点可 SSH 到目标节点。
3. 部署监控三件套
3.1 配置 hosts
编辑:
/usr/local/dbbot/monitoring_prometheus_ansible/inventory/hosts.ini
示例:
[prometheus]
192.168.199.161 ansible_user=root ansible_ssh_pass="'密码'"
[grafana]
192.168.199.161 ansible_user=root ansible_ssh_pass="'密码'"
[alertmanager]
192.168.199.161 ansible_user=root ansible_ssh_pass="'密码'"
3.2 准备安装包
放入目录:/usr/local/dbbot/monitoring_prometheus_ansible/downloads
prometheus-2.54.0.linux-amd64.tar.gzgrafana-enterprise-10.4.6.linux-amd64.tar.gzalertmanager-0.27.0.linux-amd64.tar.gz
3.3 配置告警邮箱
编辑 playbooks/common_config.yml:
alert_email_to: 'your_mail@example.com'
alert_email_from: 'your_mail@example.com'
alert_smtp_smarthost: 'smtp.example.com:587'
alert_smtp_auth_username: 'your_mail@example.com'
alert_smtp_auth_password: 'smtp_auth_password'
3.4 执行部署
cd /usr/local/dbbot/monitoring_prometheus_ansible/playbooks
ansible-playbook monitoring_prometheus_deployment.yml
4. 部署 exporter
默认值说明:
node_exporter_install_type: dbbotmysqld_exporter_install_type: dbbotmysqld_exporter_topology: ms
这表示默认使用 dbbot 仓内自带的 exporter 二进制,不依赖 GitHub Release 下载。
编辑 mysql_ansible/playbooks/vars/var_exporter_install.yml,然后执行:
cd /usr/local/dbbot/mysql_ansible/playbooks
ansible-playbook exporter_install.yml
补充说明:
- 主从或单实例场景保持
mysqld_exporter_topology: ms即可。 - 仅在 MGR 场景下改为
mysqld_exporter_topology: mgr。 mysqld_exporter_port默认值已经改成auto。dbbot 会按9104 + (mysql_port - 3306)自动派生 exporter 端口。- 自动派生示例:
mysql_port: 3306->mysqld_exporter_port: 9104mysql_port: 3307->mysqld_exporter_port: 9105mysql_port: 3310->mysqld_exporter_port: 9108
- 如果你更希望手工控制端口,也可以显式设置,例如
mysqld_exporter_port: 9201。 - 如果你显式切换为
package模式,则需要提前把node_exporter和mysqld_exporter安装包放到mysql_ansible/downloads/,或者允许 dbbot 控制节点访问 GitHub Release。
5. 注册 exporter 到 Prometheus
使用 exporterregistrar:
- 源码仓自带的二进制位于
mysql_ansible/playbooks/exporterregistrar。 - 发行包自带的
exporterregistrar已按CGO_ENABLED=0、GOOS=linux、GOARCH=amd64、GOAMD64=v1构建,适合常见 Red Hat 系 Linux x86_64 控制节点直接运行。 - 如果你自行修改了 Go 代码,或控制节点不是
Linux amd64,可进入mysql_ansible/exporterregistrar/重新执行sh build.sh,生成新的兼容性二进制。
cd /usr/local/dbbot/mysql_ansible/playbooks
# node exporter
./exporterregistrar register -t node -H 192.168.199.131 -s 192.168.199.161 -p ${prometheus_server_root_password}
./exporterregistrar register -t node -H 192.168.199.132 -s 192.168.199.161 -p ${prometheus_server_root_password}
./exporterregistrar register -t node -H 192.168.199.133 -s 192.168.199.161 -p ${prometheus_server_root_password}
# mysqld exporter: MySQL 3307 -> exporter 9105
./exporterregistrar register -t mysql -H 192.168.199.131 --db-port 3307 -s 192.168.199.161 -p ${prometheus_server_root_password} --topology mgr
./exporterregistrar register -t mysql -H 192.168.199.132 --db-port 3307 -s 192.168.199.161 -p ${prometheus_server_root_password} --topology mgr
./exporterregistrar register -t mysql -H 192.168.199.133 --db-port 3307 -s 192.168.199.161 -p ${prometheus_server_root_password} --topology mgr
# mysqld exporter: MySQL 3310 -> exporter 9108
./exporterregistrar register -t mysql -H 192.168.199.131 --db-port 3310 -s 192.168.199.161 -p ${prometheus_server_root_password} --topology ms
./exporterregistrar register -t mysql -H 192.168.199.132 --db-port 3310 -s 192.168.199.161 -p ${prometheus_server_root_password} --topology ms
./exporterregistrar register -t mysql -H 192.168.199.133 --db-port 3310 -s 192.168.199.161 -p ${prometheus_server_root_password} --topology ms
如果你为 mysqld_exporter_port 显式指定了非自动端口,则注册时追加 -P。
6. 验证
- Prometheus:
http://192.168.199.161:9090 - Grafana:
http://192.168.199.161:3000 - Alertmanager:
http://192.168.199.161:9093
Grafana 默认登录:
- 用户名:
admin - 密码:
admin
首次登录后建议立即修改密码。

告警联调建议:在从库执行 stop replica;,观察 Prometheus/Grafana/Alertmanager 状态变化。