Rocky 9系统 Prometheus 3.12.0 监控Mysql 8.0.46

现在的环境:

✅ Rocky Linux 9​

✅ Prometheus 3.12.0​

✅ MySQL 8.0.46 ​

✅ 不使用 root 用户

一、创建运行用户

bash 复制代码
sudo useradd --no-create-home --shell /bin/false mysqld_exporter

二、安装 mysqld_exporter

bash 复制代码
cd /tmp
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.19.0/mysqld_exporter-0.19.0.linux-amd64.tar.gz
tar -xvf mysqld_exporter-0.19.0.linux-amd64.tar.gz
sudo mv mysqld_exporter-0.19.0.linux-amd64/mysqld_exporter /usr/local/bin/
sudo chown mysqld_exporter:mysqld_exporter /usr/local/bin/mysqld_exporter

三、MySQL 授权

bash 复制代码
登录 MySQL:
mysql -u root -p
执行:
CREATE USER IF NOT EXISTS 'exporter'@'localhost'
  IDENTIFIED BY 'Exporter123!'
  WITH MAX_USER_CONNECTIONS 3;

GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
FLUSH PRIVILEGES;

四、MySQL Exporter 配置

bash 复制代码
sudo mkdir -p /etc/mysqld_exporter
sudo tee /etc/mysqld_exporter/.my.cnf > /dev/null << 'EOF'
[client]
user=exporter
password=Exporter123!
host=localhost
port=3306
EOF

sudo chown -R mysqld_exporter:mysqld_exporter /etc/mysqld_exporter
sudo chmod 600 /etc/mysqld_exporter/.my.cnf

五、systemd 服务(MySQL Exporter)

bash 复制代码
sudo tee /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
EOF
初始化systemctl并启动mysqld_exporter
sudo systemctl daemon-reload
sudo systemctl enable --now mysqld_exporter

六、验证

1、MySQL Exporter 状态

bash 复制代码
sudo systemctl status mysqld_exporter

2、端口

bash 复制代码
ss -lntp | grep 9104

3、MySQL 是否成功采集

bash 复制代码
curl http://localhost:9104/metrics | grep mysql_up

✅ 正确结果:

bash 复制代码
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  175k    0  175k    0     0  9250k      0 --:--:-- --:--:-- --:--:-- 9250k
# HELP mysql_up Whether the MySQL server is up.
# TYPE mysql_up gauge
mysql_up 1

七、Prometheus 验证

浏览器访问:

http://服务器IP:9090

→ Status → Targets

✅ 应看到:

Job State
prometheus ✅ UP
mysql ✅ UP