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 可视化监控数据
- 添加 Prometheus 数据源:在 Grafana 中,将 Prometheus 配置为数据源。
- 导入 MySQL 监控仪表板:在 Grafana 中,可以导入已有的 MySQL 仪表板模板(如 mysqld_exporter 仪表板模板)。
总结
- 在每台 MySQL 服务器上部署 mysqld_exporter 容器。
- 配置 Prometheus 从每个 mysqld_exporter 实例收集数据。
- 在 Grafana 中导入 MySQL 仪表板,集中监控所有 MySQL 数据库的性能。
使用 Docker 部署 mysqld_exporter 可以让安装和管理更简便,也易于更新和维护。