MySQL Exporter 快速入门

Prometheus exporter for MySQL server metrics.

支持版本:

  • MySQL >= 5.6.
  • MariaDB >= 10.3

注意: Not all collection methods are supported on MySQL/MariaDB < 5.6

https://github.com/prometheus/mysqld_exporter

一、创建用于监视数据库的用户 exporter

mysql -u root -p

mysql> set global validate_password.policy=LOW; # 降低MySQL8 密码规则策略,或者按规则设置密码

mysql> CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'Prometheus' WITH MAX_USER_CONNECTIONS 5;

mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';

说明:使用max_user_connections参数来限制exporter用户最大连接数,避免监控引起数据库过载,需要注意的是该参数并不是MySQL/Mariadb每个版本都支持;另若不给REPLICATION CLIENT权限,可能会报如下错误。

mysql_exporter 支持MySQL和MariaDB,版本:5.5以及更高版本。

如果MySQL/MariaDB版本低于5.6,可能有部分收集方法不支持。详细请阅读github文档。

CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';

注意:建议为用户设置最大连接限制,以避免服务器在重负载下因监控抓取而超载。并非所有 MySQL/MariaDB 版本都支持此功能;例如,MariaDB 10.1(随 Ubuntu 18.04 提供)不支持此功能。

二、部署 mysqld_exporter

下载 mysqld_exporter

https://github.com/prometheus/mysqld_exporter/releases

解压并安装:

cd /usr/local/src && tar xvf mysqld_exporter-0.13.0.linux-amd64.tar.gz;
mv mysqld_exporter-0.13.0.linux-amd64 /usr/local/mysqld_exporter;
cd /usr/local/mysqld_exporter;
单导出器模式

配置 使用 ~/.my.cnf :

cat > /root/.my.cnf <<EOF

[client]
user=exporter
password=Prometheus
EOF

使用 ~/.my.cnf 运行:

./mysqld_exporter <flags>

访问监控度量信息地址:

http://localhost:9104/metrics

多目标支持

此导出器支持多目标模式。这允许为多个 MySQL 目标运行此导出器的单个实例。

要使用多目标功能,请将 http 请求发送到端点 /probe?target=foo:5432,其中目标设置为要从中抓取指标的 MySQL 实例的 DSN。

为了避免在 URL 中放入用户名和密码等敏感信息,您可以在文件中有多个配置,并通过添加到请求中config.my-cnf来匹配它。&auth_module=<section>

多个配置的示例配置文件

[client]
user = foo
password = foo123
[client.servers]
user = bar
password = bar123
使用 systemd方式启动
# cat >/usr/lib/systemd/system/mysqld_exporter.service <<EOF

[Unit]
Description=Prometheus exporter for MySQL server metrics.
Documentation=https://github.com/prometheus/mysqld_exporter
After=network.target

[Service]
Environment=DATA_SOURCE_NAME=exporter:Prometheus@(localhost:3306)/
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/root/.my.cnf --web.listen-address=:9104
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

# systemctl enable mysqld_exporter

# systemctl restart mysqld_exporter

设置随机启动:

[root@local ~]# systemctl daemon-reload
[root@local ~]# systemctl disable mysqld_exporter.service
[root@local ~]# systemctl enable mysqld_exporter.service
[root@local ~]# systemctl start mysqld_exporter.service
[root@local ~]# systemctl status mysqld_exporter.service
[root@local ~]# systemctl stop mysqld_exporter.service
[root@local ~]# systemctl restart mysqld_exporter.service

三、在prometheus.yaml中添加 mysqld_exporter 的配置

在普罗米修斯方面,您可以按如下方式设置抓取配置

crape_configs:

  - job_name: "mysql" # To get metrics about the mysql exporter’s targets

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["192.168.1.111:9104"]
作者:Jeebiz  创建时间:2023-02-21 22:47
最后编辑:Jeebiz  更新时间:2024-01-24 21:48