
使用PMM图形化监控MySQL MGR动态
1.引入
目前市面上对于MySQL相关的监控平台,监控软件,自动诊断平台,或者称之为云管平台等众多但是针对MGR高可用组复制和主从延迟,或者主从复制实时延迟的监控工具相对有限,缺乏直观的MySQL高可用架构的展示和复制延迟,分析,建议等可量化观测的指标,而且部分监控配置起来相对较为繁琐。
2.PMM监控的安装和配置使用
今天我们就来介绍一款开源的图形化监控平台PMM,其提供友好监控UI界面,支持MySQL多种存储引擎详细指标监控展示,以及多种类型数据库以及数据库中间件的运行监控。
2.1PMM介绍
PMM 全称percona-monitoring-and-management,以下简称PMM PMM是Percona Monitoring and Management监控并支持MySQL多个分支版本,包括Percona Server for MySQL、Percona XtraDB Cluster、Oracle MySQL Community Edition、Oracle MySQL Enterprise Edition和MariaDB。
PMM其结构是C/S结构,由客户端pmm-agent和服务器端pmm-server组成
pmm-client安装在被监控的主机上,pmm-server则可以独立安装在一台监控服务器上。用户通过Grafana来查看监控试图和动态,其后调用QAN查询分析器分析一段时间内的数据库查询性能,QAN App 是一个 Web 应用程序,用于可视化收集的查询分析数据,性能数据来源主要是通过QAN api接口调用pmm-client中的agent代理来采集的,VictoriaMetrics一个可扩展的时间序列数据库,记录事实变化,用户可通过不同时间段来进行范围查询调整(PMM 2.12.0中VictoriaMetrics替换了Prometheus),ClickHouse是第三方面向列的数据库,主要作用是用来提高查询分析效率。Postgresql数据库则记录了平台的配置和相关标签信息等。mointored database为被监控的数据库实例,exports为提供的监控组件类型,可监控不同的数据库对象,则按需调用不同的exporters接口
客户端和服务器端对应组件的分布和交互关系:pmm-agent是一个客户端组件 一个最小的命令行界面,它是负责引入客户端功能的中央入口点:它进行客户端的身份验证,获取存储在 PMM 服务器上的客户端配置,管理导出器和其他代理。为了确保从 PMM Client 到 PMM Server 的数据传输安全,所有导出器都可以使用 SSL/TLS 加密连接,并且它们与 PMM 服务器的通信受到 HTTP 基本身份验证的保护。
2.2PMM安装方式
如官方所描述支持3种部署方式
1、Docker方式安装。
优点是简单,快捷,方便,但前提条件是安装pmm-server的主机需要联接外网,装完Docker之后,可以直接拉取pmm-server镜像运行,pull镜像大概500M+,需要结合自己的网络状况。
2、使用VirtualBox虚拟机方式安装。
目前可以下载到对应pmm-server的OVF格式文件,此文件是由Oracle公司的VirtualBox虚拟机支持,可以将下载的PMM文件导入到VirtualBoxOVF虚拟机后再配置。缺点是OVF下载速度太慢了。
3、亚马逊AWS云环境。
可以在AWS Marketplace应用市场上找到对应的percona的PMM监控选装,安装相对简单,PMM监控免费,但对应pmm-server基础运行的linux云环境需要付费。
鉴于AWS环境目前没账号,VirtualBox虚拟对应pmm-server的OVF格式文件下载较为缓慢,下载时长超过12小时,所以本次先介绍docker安装方式。
2.2.1首先安装docker
2.2.2配置yum工具
配置docker安装的yum源的地址,下列阿里云的和官方的二选一即可 阿里云地址:
官方地址(官网地址我试了2次,每次都中断可能和网络环境有关):
安装docker所用到的系统包3个,yum配置单元,驱动映射包,和lvm逻辑卷管理命令
2.2.3执行docker安装
查看对应的yum仓库地址中所有的版本信息
如果在redhat7.7直接安装yum -y install docker-ce-17.03.2.ce-1.el7.centos.x86_64 可能会遇到报错如下:
安装指定低版本,并加上docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
4、启动docker服务,并添加到系统自启动服务中
2.2.4安装pmm-server服务器端
上边我们介绍过了PMM采用的是C/S结构,也就是客户端到服务器端的结构,所以分两部分,一部分是pmm-server,另一部分是pmm-client
1、首先在监控主机上安装pmm-server 直接在当前linux系统上拉取pmm-server镜像:
2、在pmm-server创建数据卷路径
3、然后运行pmm-server容器
4、这样pmm-server就安装完成了,可以通过docker命令查看运行情况
5、接下就可通过浏览器登录pmm-server了 可以在windows浏览器中输入pmm-server的IP地址访问:https://172.16.130.12 (注意:https而非http)
默认初始登录的用户名密码为:admin/admin 另外注意浏览器的问题:浏览器部分版本可能不支持Grafana的UI界面,比如我用搜狗浏览器和360浏览器都出现了如下的提示:
支持的浏览器如:1、Chrome/Chromium 谷歌浏览器 2、Firefox 火狐浏览器 3、Safari MAC系统的Safari 4、Microsoft Edge 或 IE 11 以上。
如果想要预先修改Grafana登录密码可以使用如下命令:
2.2.5安装pmm-client客户端
在每个要监控的MySQL服务器上下载安装PMM-CLIENT 安装方式有2种:
1、如果无外网连接环境,可以预先下载二进制包,然后手动scp分发到要监控的主机上手动安装。
2、如果可以连接网络,则可以通过yum方式在线安装。
两种方法如下:
第一种、二进制包安装 1、官网下载二进制包,然后scp拷贝到要监控的MySQL主机上,考虑到MySQL服务器端可能无法联网,所以可以采用下载二进制包安装的方法进行。
2、解压二进制包
3、配置环境变量,设置export PMM_DIR路径
4、配置pmm-client客户端
第二种、yum在线安装 如果可以连接外网,则可以直接使用yum安装 首先,配置yum的repo仓库地址
其次,直接安装pmm-client客户端即可
然后,装完后检查下版本信息。
2.2.6注册pmm-client客户端到pmm-server上即可
3.通过web页面添加MGR组复制监控
目前现有的MySQL MGR组复制在同一台主机上,使用3308,3309,3310三个端口隔离,搭建的MGR,其结构如下:
在添加监控之前,在MGR上创建用于监控数据采集的数据库的数据库用户,开启performance_schema的监控指标
通过web页面方式添加MGR实例到监控中,具体操作如下图
另外可通过命令行方式增加监控的数据库
如果开启了MGR的慢日志,则可以通过下列命令添加慢日志监控
其他具体命令方式添加MySQL的监控项,可参考官方示例:https://docs.percona.com/percona-monitoring-and-management/setting-up/client/mysql.html
4.PMM监控选项图示
将上述剩余的两个MGR节点,以同样的方式添加到pmm-server,等待pmm-server的数据采集大约30s之后,就可以看到对应的MGR状态情况了,如下示例 监控MGR状态,采集所使用的SQL,我们可以在被监控的主机上尝试开启general log来捕获这些系统表的数据统计SQL。
当节点故障发生故障,观察监控界面状态变化
在MGR上使用压测工具benchmarksql尝试建仓,查看下PMM监控中MGR的同步延迟情况 benchmarksql数据建仓约10分钟左右,对应的MGR延迟逐渐增大
监控MGR组复制的3个节点innodb引擎I/O使用情况
查看MGR的产生的锁情况,点击黄色六边形可具体查看详细信息
查看当前MGR主节点的SQL执行情况,同时根据需求进行query analytics查询分析
同样可以监控MGR所在主机的运行情况,CPU,MEMORY,I/O,NETWORK等
节点主机信息
后续的监控事项就不一 一展示描述了,大家可以自行下载,上手试一下,看10遍不如动手搭一次,心动不如行动。
5.卸载PMM-CLIENT
1、yum安装方式和二进制包方式
2、取消到pmm-server的注册
取消监控的节点或者客户端:
3、docker方式卸载pmm-client 总结起来3个字,1停2删3清 1.停止pmm-client 容器
2.删除pmm-client 容器
3.删除pmm-client的docker镜像
4.清理卷组中的数据
6.总结
PMM监控管理工具 其实我更想叫它运管平台,而不是单纯的监控工具,毕竟是两个M(monitoring-and-management),它已经比个别厂商的付费监控平台优秀的多了,而且是percona开源免费的,其优点如下:
A)、采用C/S结构部署,分为pmm-client和pmm-server,docker方式部署较为简单高效易上手。
B)、提供较为丰富的MySQL监控架构,如MGR,主从复制,PXC等,支持多种数据库监控接入,WEB UI界面指标可视化的仪表盘丰富。
C)、除了提供较为丰富的MySQL多种存储引擎的监控指标,且对应监控项按需细化增删等。
D)、同时根据采集监控的数据库指标,可以按需制定告警规则,以及根据监控数据提出数据库健康分析建议和评估。
E)、其他方面除了支持监控MySQL数据库之外,还支持Cloud Database、PostgreSQL、MongoDB、HAproxy、ProxySQL等数据库以及中间件的监控。
如果大家有时间的话,建议不妨上手试一下,监控MGR、MS复制、中间件状态、主机负载情况,做日常性的监控看板,统筹多实例,且有跨多个厂商的数据库做集中运监管的,还是很不错的选择。书写中如果有纰漏和错误还请大家帮忙指出,谢谢。
