南风大叔

Prometheus: mysqld_exporter

black flat screen computer monitor turned on beside black computer keyboard

Prometheus: mysqld_exporter

1. 在每台 MySQL 服务器上部署 mysqld_exporter 容器

在每个需要监控的 MySQL 服务器上运行一个 mysqld_exporter 容器。 创建 MySQL 监控用户(仅需一次) 确保每个 MySQL 实例中有一个用于监控的只读用户。例如:

CREATE USER 'exporter'@'%' IDENTIFIED BY 'password';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';
FLUSH PRIVILEGES;

将 exporter 用户名和密码替换为你实际的用户名和密码。

2. 创建 .my.cnf 配置文件

在 mysqld_exporter 容器的工作目录创建 .my.cnf 文件,内容如下:

mkdir config
cd config
vi .my.cnf
[client]
user = root
password = abc
host = server2
[client.server1]
user = test
password = foo

3. 启动 mysqld_exporter 容器

在 Docker 中运行 mysqld_exporter,并将 MySQL 连接信息通过环境变量传递给容器。 用 Docker Compose 文件来管理 mysqld_exporter 容器。以下是示例 docker-compose.yml:

services:
  mysqld-exporter:
    image: prom/mysqld-exporter
    container_name: mysqld_exporter
    ports:
      - "9104:9104"  # 映射 mysqld_exporter 的默认端口
    networks:
      - 1panel-network  # 使用已有的 1panel-network 网络
    volumes:
      - ${PWD}/config/.my.cnf:/.my.cnf  # 使用 ${PWD} 指定当前目录路径

networks:
  1panel-network:
    external: true  # 指定使用已有的外部网络

运行以下命令启动服务:

docker-compose up -d

4. 配置 Prometheus 监控多个 mysqld_exporter 实例

在 Prometheus 配置文件(通常是 prometheus.yml)中添加每台服务器上运行的 mysqld_exporter 实例,定义 scrape_configs。

scrape_configs:
  - job_name: 'mysql'
    static_configs:
      - targets:
          - 'server1_ip:9104'  # 第一个MySQL服务器上的mysqld_exporter
          - 'server2_ip:9104'  # 第二个MySQL服务器上的mysqld_exporter
          # 可以继续添加其他服务器

5. 配置 Grafana 可视化监控数据

  1. **添加 Prometheus 数据源:**在 Grafana 中,将 Prometheus 配置为数据源。
  2. 导入 MySQL 监控仪表板:在 Grafana 中,可以导入已有的 MySQL 仪表板模板(如 mysqld_exporter 仪表板模板)。

总结

使用 Docker 部署 mysqld_exporter 可以让安装和管理更简便,也易于更新和维护。

#MySQL #Mysqld_exporter #Prometheus