Bootstrap

Prometheus 监控MySQL数据

mysqld_exporter 是 Prometheus 的 MySQL 指标导出插件

Github地址:https://github.com/prometheus/mysqld_exporter这里来聊聊它的部署。

首先在 https://github.com/prometheus/mysqld_exporter/releases 中找到对应的 mysqld_exporter 版本。

 因为我用的是CentOS 7 版本,选择的软件包后缀是 linux-amd64.tar.gz

1.解压Mysqld_exporter并安装


tar -xf mysqld_exporter-0.15.1.linux-amd64.tar.gz cp -r mysqld_exporter-0.15.1.linux-amd64.tar.gz /usr/local/mysqld_exporter

2.编写Mysqld Exporter启动脚本

cat>/usr/local/mysqld_exporter/mysqld_exporter.service<<EOF
[Unit]
Description=mysqld Exporter
After=network.target
Wants=network-online.target
 
[Service]
Type=simple
User=root
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf
 
Restart=on-failure
LimitNOFILE=65536
 
[Install]
WantedBy=multi-user.target
EOF

3.添加启动脚本到systemd启动管理中

ln -s /usr/local/mysqld_exporter/mysqld_exporter.service /lib/systemd/system/
systemctl daemon-reload

4.在MySQL上创建监控用户并授权

create user 'prometheus'@'%' IDENTIFIED BY '密码';
GRANT SELECT,PROCESS,SUPER,REPLICATION CLIENT, RELOAD ON *.* TO 'prometheus'@'%';

另外要在/usr/local/mysqld_exporter/ 目录下新建一个配置文件:

vim /usr/local/mysqld_exporter/.my.cnf
--------------------------------------------------
[client]
user=prometheus
password=密码
--------------------------------------------------
systemctl start mysqld_exporter
systemctl enable mysqld_exporter

# mysqld_exporter 默认监控 9104端口

这样就实现了对MySQL的监控。


5.MySQL的监控指标

  1. 全局状态变量

    • mysql_global_variables_max_connections:MySQL 最大允许的连接数。
    • mysql_global_status_threads_connected:当前活动的连接数。
  2. 连接相关指标

    • mysql_global_status_connections:自从服务器启动以来尝试连接MySQL的次数。
    • mysql_global_status_aborted_connects:失败的连接尝试次数。
  3. 查询性能指标

    • mysql_global_status_questions:服务器接收的查询请求数。
    • mysql_global_status_slow_queries:慢查询的数量。
    • mysql_global_status_select_full_join:没有使用索引的联接数量。
  4. 缓存和缓冲池

    • mysql_global_status_innodb_buffer_pool_pages_free:InnoDB 缓冲池中空闲页面的数量。
    • mysql_global_status_innodb_buffer_pool_pages_total:缓冲池的总页面数。
    • mysql_global_status_key_read_requests 和 mysql_global_status_key_reads:索引读取请求及其实际磁盘读取次数。
  5. 表锁和行锁

    • mysql_global_status_table_locks_waited:需要等待的表锁次数。
    • mysql_global_status_innodb_row_lock_time_avg:InnoDB 行锁平均等待时间。
  6. 复制状态(如果适用):

    • mysql_slave_status_seconds_behind_master:主从复制延迟时间。
  7. 资源使用情况

    • mysql_global_status_open_files:当前打开的文件描述符数。
    • mysql_global_status_open_tables:当前打开的表数。
  8. 系统层面指标(可能间接通过Node_Exporter获取主机的资源情况):

    • CPU使用率、内存使用情况、磁盘I/O等。
  9. 异常和错误

    • mysql_global_status_errors:各种类型的错误计数。

关于Prometheus监控MySQL,今天就分享到这里!谢谢各位的观看。

;