MYSQL PMM   搭建容易,细节难_数据库

现在什么都要短平快,意思就是又要好,又要快,又要不出问题,嗯, 如果要监控MYSQL 来说,想要一个这样的东西 PMM monitor and mannagement)是一个不错的选择。(顺便说一句,二代已经出炉了,这里写的还是一代)


首先要好,这款监控开源产品是支持  MYSQL,POSTGRESQL, MONGODB , ProxySQL , 三款数据库基本上公司主流的开源数据库都支持了。同时这款产品还有一个特殊的地方就是对自己有监控,什么意思,很多监控产品对接入的系统都有良好的监控,但是独独对自己本身的状态是没有 监控的,这款产品会对自身的数据库,系统状态都是有监控的。


怎么安装就不提了,网上安装也是一大堆,但实际上安装还是需要提一下的,因为我在测试系统上安装,是很顺利的,但到了生产系统上就是另外一回事了。 

大致安装这个系统会遇到以下问题


1 由于防火墙没有关闭,在安装数据收集端后,造成DOCKER系统中的配置项写入IPTABLE,进行DOCKER 内的监控系统和外部客户端数据的转发失败。 具体的反应就是安装完客户端,客户端和数据收集端之间的数据连接状态为 DOWN ,即使你在关闭防火墙也是无法弥补,只能重新安装。


MYSQL PMM   搭建容易,细节难_mysql_02


2 网段的原因,实际上一个公司里面的数据库服务器可能会在多个网段都存在,但监控的收集只在一个网段,那网络的4-7 层的设置并打通关于防火墙的一些设置就是必须的,至于怎么打通,那就的问问你公司里面的网络大牛了。


3 默认安装PMM 是没有用户名密码的,但实际上一个系统最好还是有用户名和密码的设置,这里的用户名密码由于PMM是DOCER 的安装方式,只能在初始化的时候,来做,否则只能重做。


4  根据官方文档的要求,如果你没有专业的DOCKER Operation 那最还是按照文档来给OPT 目录提供充足的空间,防止某些你不懂的领域产生的问题


跳过这些坑后,剩下的基本上就是


1 部分监控项目有,但没有监控数据

2 慢查询没有数据


我们先看第一个问题 (以下的MYSQL 为 PERCONA 5.7.23),以下仅仅是选择了几个指标,实际上安装后 Innodb metrics advanced 都没有数据


MYSQL PMM   搭建容易,细节难_数据_03

MYSQL PMM   搭建容易,细节难_数据库_04

MYSQL PMM   搭建容易,细节难_mysql_05


到底怎么才能有数据呢????  


SET GLOBAL innodb_monitor_enable=all


在MYSQL中执行完上面的语句,立即大部分PMM中显示 NO DATA POINTS 的 地方均会开始接受和显示数据。



但即使你做了这些,还是有些图形没有数据显示 no data point

到底是怎么回事。相信这里面至少还有两个图形没有数据

1 innodb online DDL

2 innodb Defragmentation 


为什么,因为这两个图形是仅仅服务于 MariaDB的,所以如果你使用的是官版的或者是PERCONA 版本的MYSQL 是捕会有数据显示的。



还记得几年前写过一个SHELL 脚本,来统计一段时间有多少的 row  insert ,delete, update 等信息,现在再看这个监控 innodb row operations ,那是比较一目了然看到系统的 IN OUT 状态了。


在基本上搞清楚这些问题后,下面就是对一些监控图形和指标的掌握了。(本期一定是说不完,所以写到哪里算哪里)



1 innodb checkpoint age, 这张图上我比较关注的并不是图中的红色的线,而是  uncheckpointed bytes ,这个数值的大小预示着有多少脏页还存在于系统中

MYSQL PMM   搭建容易,细节难_mysql_06

下面这个图中的值之间的关系,试想如果你有很多的日志还没有做checkpoint ,日志没有落盘,你的想想哪里出了问题,并关注一下系统的负载情况,以及I/O情况


MYSQL PMM   搭建容易,细节难_数据库_07

当然在看完上面的图,我马上就想看下面这个图,看看到底每秒的日志写入量有多大。


MYSQL PMM   搭建容易,细节难_数据_08


而相关的 innodb_buffer_pool_read_requests  也应该被关注,这表示在某个时间段系统从磁盘上请求数据的请求数,配合 innodb_buffer_pool_reads 和 Innodb_buffer_pool_read_requests两个参数就可以获得缓存的命中率是多少,并且是否缺少内存来界定的一个指标。

MYSQL PMM   搭建容易,细节难_mysql_09

当然死锁也是很容易在 innodb metrics 中发现的

MYSQL PMM   搭建容易,细节难_mysql_10

另外还有一些比较好的功能,例如可以看到表的存储空间的占用以及每个表的行数 (这里不一定是十分准确的),相关的信息是来自于information_schema中的VIEW的信息而来。


MYSQL PMM   搭建容易,细节难_数据库_11


MYSQL PMM   搭建容易,细节难_数据_12


另外如果你使用的数据库是PERCONA 版本的MYSQL 则监控还会奉送 mysql user statistics 状态的界面

例如

那个用户创建的连接多了,那个用户的流量比较高,那个用户搜索的数据行数,使用的CPU 等等都可以从PMM 中获取。


MYSQL PMM   搭建容易,细节难_数据_13

MYSQL PMM   搭建容易,细节难_mysql_14


所以说,PMM 看上去搭建速度很快,能展示的项目也很多,但其中的细节的问题,只有好好弄过的人知道有啥坑,OK 今天就到这里。

MYSQL PMM   搭建容易,细节难_数据库_15