使用mysqld_exporter 实现Prometheus 监控Mysql
系列文章目录
- Prometheus 的安装部署
- Grafana的安装部署
- Linux服务器接入Prometheus监控-Node Exporter 安装指南
- Prometheus 接入SpringBoot微服务监控
- Mysql 接入 Prometheus
- RocketMQ 接入Prometheus 监控
- ElasticSearch 接入 Prometheus
- Nacos 接入 Prometheus 监控
- Redis 接入 Prometheus 监控系统
- Prometheus + Grafana 监控系统-告警规则配置
- Prometheus + Grafana 监控系统-PrometheusAlert安装与配置指南
- 下载地址: https://prometheus.io/download/#mysqld_exporter
wget https://github.com/prometheus/mysqld_exporter/releases/download/vX.Y.Z/mysqld_exporter-X.Y.Z.linux-amd64.tar.gz
# 示例:
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz # 解压安装
tar -xzvf mysqld_exporter-*.linux-amd64.tar.gz
-
mysqld_exporter-0.15.1.linux-amd64.tar.gz 支持的 MySQL 版本: MySQL >= 5.6, 除了 MySQL,mysqld_exporter 也支持 MariaDB,版本 >= 10.3。
-
将解压后的二进制文件移动到系统路径下(可选):
sudo mv mysqld_exporter-X.Y.Z.linux-amd64/mysqld_exporter /usr/local/bin/mysqld_exporter
-
配置 mysqld_exporter
- 在 MySQL 服务器上创建一个用于 mysqld_exporter 的用户,并赋予相应的权限。
CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'your_password'; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'localhost'; FLUSH PRIVILEGES;
-
创建一个配置文件(如 my.cnf),包含 MySQL 服务器的连接信息:
[client] user=mysqld_exporter password=your_password host=localhost port=3306 # 可选 # socket=/var/lib/mysql/mysql.sock
- Tips: 也支持配置抓去多个 mysql 实例
-
此时就可以启动了: nohup mysqld_exporter --config.my-cnf=.my.cnf &
- mysqld_exporter 默认监听在 9104 端口上。
-
注意: 也可以注册成一个服务
vim /etc/systemd/system/mysqld_exporter.service # 内容如下[Unit] Description=MySQLd Exporter After=network.target [Service] User=your_username # 替换为你的用户名或运行mysqld_exporter的用户 Group=your_group # 替换为你的组名或运行mysqld_exporter的组 ExecStart=/usr/local/bin/mysqld_exporter --config.my-cnf=/path/to/your/.my.cnf Restart=always [Install] WantedBy=multi-user.target
- 启动与管理设置自启动
sudo systemctl start mysqld_exporter sudo systemctl enable mysqld_exporter sudo systemctl status mysqld_exporter
- Tips: 更多可选与建议设置
[Service] ExecStart=/data/mysqld_exporter/mysqld_exporter --config.my-cnf /data/mysqld_exporter/.my.cnf --web.listen-address=0.0.0.0:9104 \--collect.info_schema.innodb_cmp \--collect.info_schema.innodb_cmpmem \--collect.info_schema.query_response_time \--collect.perf_schema.tableiowaits \--collect.perf_schema.indexiowaits \--collect.perf_schema.tablelocks \--collect.perf_schema.eventsstatements \--collect.perf_schema.eventswaits \--collect.perf_schema.file_events \--collect.perf_schema.file_instances \--collect.binlog_size \--collect.info_schema.tables \--collect.info_schema.tablestats \--collect.info_schema.userstats \--collect.auto_increment.columns
-
注意:
- 防火墙设置,如果服务器上有防火墙,确保它允许对mysqld_exporter监听的端口(默认为9104)的访问。
- 在生产环境中,建议使用非root用户运行mysqld_exporter,以提高安全性。
- 如果发现用户名与密码都配置正确,但是报错: mysqld_exporter: ts=2024-07-01T06:41:17.912Z caller=exporter.go:152 level=error msg=“Error pinging mysqld” err=“dial tcp [::1]:3309: connect: connection refused”
- 解决方案: 增加 mysqld_exporter 的 socket 配置。 例如: socket=/var/lib/mysql/mysql.sock
-
集成 mysqld_exporter 与 Prometheus
-
prometheus.yml
scrape_configs: - job_name: 'mysql' static_configs: - targets: ['abc.mysql.com':9104']
-
让配置生效
- sudo kill -HUP $(pidof prometheus)
-
-
Grafana 添加 Mysql 相关的仪表盘
- 官方汉化版: https://grafana.com/grafana/dashboards/17320-1-mysqld-exporter-dashboard/
- 官方汉化版: https://grafana.com/grafana/dashboards/17320-1-mysqld-exporter-dashboard/