Prometheus + Granafa 构建MySQL监控平台

概述【Prometheus + Granafa 构建MySQL监控平台】对于MySQL的监控平台,相信大家实现起来有很多了:基于天兔的监控,还有基于zabbix相关的二次开发 。相信很多同行都应该已经开始玩起来了 。我这边的选型是Prometheus + Granafa的实现方式 。简而言之就是我现在的生产环境使用的是prometheus,还有就是granafa满足的我的日常工作需要 。在入门的简介和安装,大家可以参考这里:

https://blog.51cto.com/cloumn/detail/77
1、首先看下我们的监控效果、mysql主从
 
Prometheus + Granafa 构建MySQL监控平台

文章插图
构建高大上的MySQL监控平台
 
2、mysql状态:
 
Prometheus + Granafa 构建MySQL监控平台

文章插图
 
 
Prometheus + Granafa 构建MySQL监控平台

文章插图
 
 
构建高大上的MySQL监控平台
3、缓冲池状态:
 
Prometheus + Granafa 构建MySQL监控平台

文章插图
构建高大上的MySQL监控平台
 
构建高大上的MySQL监控平台
exporter 相关部署1、安装exporter
[root@controller2 opt]# https://github.com/prometheus/mysqld_exporter/releases/download/v0.10.0/mysqld_exporter-0.10.0.linux-amd64.tar.gz[root@controller2 opt]# tar -xf mysqld_exporter-0.10.0.linux-amd64.tar.gz 2、添加mysql 账户:
GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD ON *.* TO 'exporter'@'%' IDENTIFIED BY 'localhost';flush privileges;3、编辑配置文件:
[root@controller2 mysqld_exporter-0.10.0.linux-amd64]# cat /opt/mysqld_exporter-0.10.0.linux-amd64/.my.cnf[client]user=exporterpassword=1234564、设置配置文件:
[root@controller2 mysqld_exporter-0.10.0.linux-amd64]# cat /etc/systemd/system/mysql_exporter.service[Unit]Description=mysql Monitoring SystemDocumentation=mysql Monitoring System[Service]ExecStart=/opt/mysqld_exporter-0.10.0.linux-amd64/mysqld_exporter-collect.info_schema.processlist-collect.info_schema.innodb_tablespaces-collect.info_schema.innodb_metrics-collect.perf_schema.tableiowaits-collect.perf_schema.indexiowaits-collect.perf_schema.tablelocks-collect.engine_innodb_status-collect.perf_schema.file_events-collect.info_schema.processlist-collect.binlog_size-collect.info_schema.clientstats-collect.perf_schema.eventswaits-config.my-cnf=/opt/mysqld_exporter-0.10.0.linux-amd64/.my.cnf[Install]WantedBy=multi-user.target5、添加配置到prometheus server
- job_name: 'mysql'static_configs:- targets: ['192.168.1.11:9104','192.168.1.12:9104']6、测试看有没有返回数值:
http://192.168.1.12:9104/metrics
正常我们通过mysql_up可以查询倒mysql监控是否已经生效,是否起起来
#HELP mysql_up Whether the MySQL server is up.#TYPE mysql_up gaugemysql_up 1监控相关指标在做任何一个东西监控的时候,我们要时刻明白我们要监控的是什么,指标是啥才能更好的去监控我们的服务,在mysql里面我们通常可以通过一下指标去衡量mysql的运行情况:mysql主从运行情况、查询吞吐量、慢查询情况、连接数情况、缓冲池使用情况以及查询执行性能等 。
主从复制运行指标:1、主从复制线程监控:
大部分情况下,很多企业使用的都是主从复制的环境,监控两个线程是非常重要的,在mysql里面我们通常是通过命令:
MariaDB [(none)]> show slave statusG;*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 172.16.1.1Master_User: replMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000045Read_Master_Log_Pos: 72904854Relay_Log_File: mariadb-relay-bin.000127Relay_Log_Pos: 72905142Relay_Master_Log_File: mysql-bin.000045Slave_IO_Running: YesSlave_SQL_Running: YesSlave_IO_Running、Slave_SQL_Running两个线程正常那么说明我们的复制集群是健康状态的 。
MySQLD Exporter中返回的样本数据中通过
mysql_slave_status_slave_sql_running来获取主从集群的健康状况 。
# HELP mysql_slave_status_slave_sql_running Generic metric from SHOW SLAVE STATUS.# TYPE mysql_slave_status_slave_sql_running untypedmysql_slave_status_slave_sql_running{channel_name="",connection_name="",master_host="172.16.1.1",master_uuid=""} 12、主从复制落后时间:
在使用show slave status
里面还有一个关键的参数Seconds_Behind_Master 。Seconds_Behind_Master表示slave上SQL thread与IO thread之间的延迟,我们都知道在MySQL的复制环境中,slave先从master上将binlog拉取到本地(通过IO thread),然后通过SQL


推荐阅读