---------------- # 实现MySQL监控

注:安装 和介绍 Grafana,Prometheus 可以参考我的另一篇博文,这里不做介绍, 地址:点击查看(docker-compose搭建Grafana与Prometheus监控SpringBoot应用)

一、安装 mysqld_exporter

  • 新建docker-compose.yml
  version: '3'
  services:
    mysqld-exporter:
      image: prom/mysqld-exporter:latest
      container_name: mysqld-exporter
      restart: always
      ports:
        - 9104:9104
      command: "--config.my-cnf=/var/mysqld-exporter.cnf"
      environment:
        - MYSQLD_EXPORTER_PASSWORD=xxxxx # 监控mysql的密码
      volumes:
        - "/www/grafana/config/mysqld-exporter.cnf:/var/mysqld-exporter.cnf"
  • 新建/www/granfana/config/mysqld-exporter.cnf文件 (路径可以自定义,与容器映射路径要一致

  • /www/granfana/config/mysqld-exporter.cnf 中 添加

    [client]
    user = xxx
    password = xxxx
    [client.servers]
    user = xxx
    password = xxxx
    
  • 重启mysql

  • 连接mysql 并执行以下内容

    ## 监控专用账户权限配置:
    CREATE USER '<监控专用用户名>'@'%' IDENTIFIED BY '<监控专用密码>' WITH MAX_USER_CONNECTIONS 10;
    GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO '<监控专用用户名>'@'%';
    

    命令解析:

    1. CREATE USER 'xxx'@'%' IDENTIFIED BY 'xxxx' WITH MAX_USER_CONNECTIONS 10;
      • CREATE USER:创建一个新的用户。
      • 'xxx'@'%':指定用户的用户名为 'xxx',并且可以从任何主机连接('%'表示通配符,表示任意主机)。
      • IDENTIFIED BY 'xxxx':设置用户的密码为’监控专用密码’。
      • WITH MAX_USER_CONNECTIONS 10:限制用户的最大连接数为10个。
    2. GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'xxx'@'%';
      • GRANT:授予用户权限。
      • PROCESS:允许用户查看当前正在运行的进程。
      • REPLICATION CLIENT:允许用户连接到MySQL复制通道,并查看复制信息。
      • SELECT ON *.*:授予用户对所有数据库的SELECT权限。
      • TO 'xxx'@'%':将授权应用于用户 'xxx',并且可以从任何主机连接。

    综上所述,这段命令的作用是创建一个名为 'xxx' 的用户,该用户可以从任何主机连接到MySQL数据库,并且具有最大连接数限制为10个。该用户被授予查看当前进程、复制信息以及对所有数据库进行SELECT操作的权限。这样可以用于监控MySQL数据库的相关操作。

二、配置 Prometheus

  • 在 prometheus.yml 中添加 以下内容
      # 采集mysql数据
      - job_name: mysql # To get metrics about the mysql exporter’s targets
        params:
          # Not required. Will match value to child in config file. Default value is `client`.
          auth_module: [client.servers]
        static_configs:
          - targets:
            # All mysql hostnames or unix sockets to monitor.
            - <你的mysql地址>:3306
            - <你的mysql地址>:3307
            - unix:///run/mysqld/mysqld.sock
        relabel_configs:
          - source_labels: [__address__]
            target_label: __param_target
          - source_labels: [__param_target]
            target_label: instance
          - target_label: __address__
            # The mysqld_exporter host:port
            replacement: <你的mysqld_exporter地址>:9104
    
  • 全部配置如下
    global:
      scrape_interval:     15s
      evaluation_interval: 15s
    alerting:
      alertmanagers:
        - static_configs:
            - targets:
    scrape_configs:
      - job_name: "prometheus"
        static_configs:
          - targets: ["192.168.0.227:9090"] # 此处为 Prometheus 的ip和端口
    
      # 采集mysql数据
      - job_name: mysql # To get metrics about the mysql exporter’s targets
        params:
          # Not required. Will match value to child in config file. Default value is `client`.
          auth_module: [client.servers]
          collect[]:
            - info
        static_configs:
          - targets:
            # All mysql hostnames or unix sockets to monitor.
            - <你的mysql地址>:3306
            - <你的mysql地址>:3307
        relabel_configs:
          - source_labels: [__address__]
            target_label: __param_target
          - source_labels: [__param_target]
            target_label: instance
          - target_label: __address__
            # The mysqld_exporter host:port
            replacement: <你的mysqld_exporter地址>:9104
    

三、启动

docker-compose up -d

四、配置Grafana

  • 进入界面点击仪表盘后点击导入仪表板

    - 输入 JSON 内容 获取导入文件 地址:[mysql-overview.json](https://halo-1319591454.cos.ap-nanjing.myqcloud.com/file/mysql-overview.json),加载完成后点击 Load。

五、结束

  • 效果如下: