Prometheus 5-Rocky Linux 9用Prometheus 3.12.0 + Alertmanager 0.33.0 邮件告警(Mysql)

一、MySQL 授权(MySQL)

mysql-uroot-psql>CREATEUSERIF NOT EXISTS'exporter'@'localhost'IDENTIFIED BY'Exporter123!'WITH MAX_USER_CONNECTIONS3;>GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO'exporter'@'localhost';>FLUSH PRIVILEGES;

二、mysqld_exporter 配置

sudomkdir-p/etc/mysqld_exportersudotee/etc/mysqld_exporter/.my.cnf>/dev/null<<'EOF' [client] user=exporter password=Exporter123! host=localhost port=3306 EOFsudouseradd--no-create-home--shell/bin/false mysqld_exportersudochown-Rmysqld_exporter:mysqld_exporter /etc/mysqld_exportersudochmod600/etc/mysqld_exporter/.my.cnf

三、安装 mysqld_exporte

cd/tmpwgethttps://github.com/prometheus/mysqld_exporter/releases/download/v0.19.0/mysqld_exporter-0.19.0.linux-amd64.tar.gztar-xvfmysqld_exporter-0.19.0.linux-amd64.tar.gzsudomvmysqld_exporter-0.19.0.linux-amd64/mysqld_exporter /usr/local/bin/sudochownmysqld_exporter:mysqld_exporter /usr/local/bin/mysqld_exporter

四、systemd 服务

sudotee/etc/systemd/system/mysqld_exporter.service>/dev/null<<'EOF' [Unit] Description=MySQL Exporter After=network.target mysqld.service [Service] User=mysqld_exporter ExecStart=/usr/local/bin/mysqld_exporter \ --config.my-cnf=/etc/mysqld_exporter/.my.cnf \ --web.listen-address=:9104 Restart=always [Install] WantedBy=multi-user.target EOFsudosystemctl daemon-reloadsudosystemctlenable--nowmysqld_exportersudosystemctl status mysqld_exporter

✅ 验证:

curlhttp://localhost:9104/metrics|grepmysql_up]# curl http://localhost:9104/metrics | grep mysql_up% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed100175k0175k0013.2M0--:--:-- --:--:-- --:--:--14.3M# HELP mysql_up Whether the MySQL server is up.# TYPE mysql_up gaugemysql_up1

五、Prometheus 加入 MySQL 采集

追加到 scrape_configs末尾:

vim/etc/prometheus/prometheus.yml# MySQL 监控- job_name:"mysql"static_configs: - targets:["localhost:9104"]

六、MySQL 告警规则

追加到现有 rules 后面:

sudovim/etc/prometheus/rules/alert.yml# MySQL 监控告警- name: mysql rules: - alert: MySQLDown expr: mysql_up==0for: 1m labels: severity: critical annotations: summary:"MySQL 服务不可用"description:"MySQL 实例 {{$labels.instance }} 已宕机"- alert: MySQLConnectionsHigh expr: mysql_global_status_threads_connected / mysql_global_variables_max_connections *100>80for: 3m labels: severity: warning annotations: summary:"MySQL 连接数过高"description:"MySQL {{$labels.instance }} 连接数占比超过 80%,当前值:{{$value}}%"- alert: MySQLSlowQueries expr: rate(mysql_global_status_slow_queries[5m])>0for: 3m labels: severity: warning annotations: summary:"MySQL 存在慢查询"description:"MySQL {{$labels.instance }} 慢查询速率:{{$value}}"

七、检查并重启

promtool check config /etc/prometheus/prometheus.ymlsudosystemctl restart prometheus

八、验证 MySQL 监控

浏览器访问:

纯文本

纯文本http://服务器IP:9090 → Status → Targets