Prometheus监控MySQL服务(二进制版本)

概述

Prometheus监控MySQL服务需要使用mysql_exporter服务

GitHub地址:https://github.com/prometheus/mysqld_exporter

实操

MySQL创建连接用户

# 创建用户
mysql> CREATE USER 'exporter'@'%' IDENTIFIED BY 'huangsir';
Query OK, 0 rows affected (0.12 sec)

# 配置权限
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';
Query OK, 0 rows affected (0.00 sec)

配置mysql_exporter

下载exporter

# 下载mysql_exporter
[root@lb ~]# wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.17.2/mysqld_exporter-0.17.2.linux-386.tar.gz

# 解压mysql_exporter
[root@lb ~]# tar -xvf mysqld_exporter-0.17.2.linux-386.tar.gz

# 创建软链接
[root@lb ~]# ln -s /root/mysqld_exporter-0.17.2.linux-386  /root/mysql_exporter

创建exporter的配置文件

[root@lb ~]# cat /root/mysql_exporter/.my.cnf
[client]
user=exporter
password=huangsir

启动mysql_exporter

配置exporter的systemd文件

[root@lb ~]# cat /etc/systemd/system/mysql-exporter.service
[Unit]
Description=huangSir Linux Node Exporter
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target
 
[Service]
Type=simple
# --mysqld.address:指定MySQL的地址
# --web.listen-address:指定暴漏的端口
# --config.my-cnf:指定要加载的配置文件
ExecStart=/root/mysql_exporter/mysqld_exporter --mysqld.address="10.0.0.10:3306" \
--web.listen-address=:9104 \
--config.my-cnf="/root/mysql_exporter/.my.cnf"

[Install]
WantedBy=multi-user.target

启动exporter

[root@lb ~]# systemctl daemon-reload
# 启动
[root@lb ~]# systemctl start mysql-exporter
# 检查状态
[root@lb ~]# systemctl status mysql-exporter
● mysql-exporter.service - huangSir Linux Node Exporter
     Loaded: loaded (/etc/systemd/system/mysql-exporter.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2025-06-08 14:45:13 CST; 4s ago
       Docs: https://prometheus.io/docs/introduction/overview/
   Main PID: 827560 (mysqld_exporter)
      Tasks: 3 (limit: 973)
     Memory: 1.1M
        CPU: 5ms
     CGroup: /system.slice/mysql-exporter.service
             └─827560 /root/mysql_exporter/mysqld_exporter --mysqld.address=10.0.0.10:3306 --web.listen-address=:9104 --config.my-cnf=/root/mysql_exporter/.my.cnf

Jun 08 14:45:13 lb mysqld_exporter[827560]: time=2025-06-08T06:45:13.071Z level=INFO source=mysqld_exporter.go:239 msg="Starting mysqld_exporter" version="(version=0.17.2, branch=HEAD, revi>
Jun 08 14:45:13 lb mysqld_exporter[827560]: time=2025-06-08T06:45:13.072Z level=INFO source=mysqld_exporter.go:240 msg="Build context" build_context="(go=go1.23.6, platform=linux/386, user=>
Jun 08 14:45:13 lb mysqld_exporter[827560]: time=2025-06-08T06:45:13.072Z level=INFO source=mysqld_exporter.go:252 msg="Scraper enabled" scraper=global_status
Jun 08 14:45:13 lb mysqld_exporter[827560]: time=2025-06-08T06:45:13.072Z level=INFO source=mysqld_exporter.go:252 msg="Scraper enabled" scraper=global_variables
Jun 08 14:45:13 lb mysqld_exporter[827560]: time=2025-06-08T06:45:13.072Z level=INFO source=mysqld_exporter.go:252 msg="Scraper enabled" scraper=slave_status
Jun 08 14:45:13 lb mysqld_exporter[827560]: time=2025-06-08T06:45:13.072Z level=INFO source=mysqld_exporter.go:252 msg="Scraper enabled" scraper=info_schema.query_response_time

配置Prometheus

修改配置文件

[root@lb ~/prometheus]# vim prometheus.yml
scrape_configs:
  # 添加下面的配置
  - job_name: "mysql"
    scheme: "http"
    metrics_path: "/metrics"
    static_configs:
      - targets: ["10.0.0.10:9104"]
        labels:
          app: "mysql"

检查Prometheus语法

[root@lb ~/prometheus]# ./promtool check config prometheus.yml
Checking prometheus.yml
 SUCCESS: prometheus.yml is valid prometheus config file syntax

热加载Prometheus

[root@lb ~/prometheus]# curl -X POST http://10.0.0.10:9090/-/reload

访问Prometheus查看
http://10.0.0.10:9090/targets
image

配置Grafana

导入Grafana的看板:

参考该链接:https://github.com/prometheus/mysqld_exporter/blob/main/mysqld-mixin/dashboards/mysql-overview.json

image

posted @ 2025-06-08 15:06  huangSir-devops  阅读(57)  评论(0)    收藏  举报
作者:你的名字
出处:你的博客链接
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。