PMM来监控MySQ的实现方式是PMM Client从MySQL数据库收集指标数据,然后PMM Client将收集到的数据发送到PMM Server,由PMM Server对数据进行处理、存储和可视化。
PMM添加MySQL服务的步骤如下:
PMM还支持从PostgreSQL、MariaDB、Percona服务器和Percona XtraDB集群收集指标。详见官方文档:https://docs.percona.com/percona-monitoring-and-management/setting-up/client/mysql.html
添加前确保已经完成如下事项:
On MySQL 8.0:
mysql>
CREATE USER 'pmm'@'192.168.131.99' IDENTIFIED BY 'Pmm123123.' WITH MAX_USER_CONNECTIONS 10;
GRANT SELECT, PROCESS, REPLICATION CLIENT, RELOAD, BACKUP_ADMIN ON *.* TO 'pmm'@'192.168.131.99';
On MySQL 5.7:
mysql>
CREATE USER 'pmm'@'192.168.131.99' IDENTIFIED BY 'Pmm123123.' WITH MAX_USER_CONNECTIONS 10;
GRANT SELECT, PROCESS, REPLICATION CLIENT, RELOAD ON *.* TO 'pmm'@'192.168.131.99';
查看用户:
mysql> select user,host from mysql.user where user = 'pmm';
+------+-----------+
| user | host |
+------+-----------+
| pmm | 192.168.131.99 |
+------+-----------+
mysql> show grants for pmm@192.168.131.99;
+-------------------------------------------------------------------------------+
| Grants for pmm@192.168.131.99 |
+-------------------------------------------------------------------------------+
| GRANT SELECT, RELOAD, PROCESS, REPLICATION CLIENT ON *.* TO `pmm`@`192.168.131.99` |
| GRANT BACKUP_ADMIN ON *.* TO `pmm`@`192.168.131.99` |
+-------------------------------------------------------------------------------+
指标源两种:慢查询日志和Performance_Schema。
慢速查询日志和Performance_Schema指标源各自的优缺点,如下:
数据库不同版本的源建议:
如果要使用慢查询日志作为源,pmm client和mysql数据库服务必须在同一台机器上。其实,如果满足同一台机器这个条件,那么也更建议使用慢查询日志作为源,因为可以获得更详细的监控数据,且可以减小对资源的影响。
1.慢查询日志源的设置方法
设置慢查询日志的相关参数,动态设置:
mysql>
SET GLOBAL slow_query_log = 1;
SET GLOBAL log_output = 'FILE';
SET GLOBAL long_query_time = 1;
SET GLOBAL log_slow_admin_statements = 1;
SET GLOBAL log_slow_slave_statements = 1;
或者,在配置文件my.cnf中添加这些参数:
slow_query_log=ON
log_output=FILE
long_query_time=1
log_slow_admin_statements=ON
log_slow_slave_statements=ON
下次重启后生效。
注意:动态设置好之后,也建议将这些参数固化到配置文件中,要不然下次重启之后会失效。
2.Performance_Schema源的设置方法
设置Performance_Schema的相关参数,动态设置:
mysql>
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE 'statement/%';
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%statements%';
或者,在配置文件my.cnf中添加这些参数:
performance_schema=ON
performance-schema-instrument='statement/%=ON'
performance-schema-consumer-events-statements-current=ON
performance-schema-consumer-events-statements-history=ON
performance-schema-consumer-events-statements-history-long=ON
performance-schema-consumer-statements-digest=ON
innodb_monitor_enable=all
events_transactions_current
下次重启后生效。
注意:动态设置好之后,也建议将这些参数固化到配置文件中,要不然下次重启之后会失效。
[root@mysql001 config]# pmm-admin add mysql --username=pmm --password=Pmm123123. --query-source=slowlog mysql001-mysql 192.168.131.99:3306
MySQL Service added.
Service ID : /service_id/60b91fd3-065f-41a9-892e-1eea8ca00d43
Service name: mysql001-mysql
Table statistics collection enabled (the limit is 1000, the actual table count is 365).
参数说明:
PMM用户界面查看,依次点击⚙
→Configuration
→Inventory
:
也可在命令行检查:
[root@mysql001 config]# pmm-admin inventory list services --service-type=mysql
Services list.
Service type Service name Address and Port Service ID
MySQL mysql001-mysql 192.168.131.99:3306 /service_id/60b91fd3-065f-41a9-892e-1eea8ca00d43
QAN全称Query Analytics,此仪表板显示查询是如何执行的,以及它们在哪里花费时间。可以帮助我们分析一段时间内的数据库查询,可用于优化数据库性能,快速找到并解决问题的根源。
在工作中可能看得最多的就是这块面板了,因为影响数据库性能百分之九十的原因是查询问题,也就是慢SQL。有时候一个慢SQL就能拖垮整个库,进而影响业务系统的正常运转。
因此,应该好好利用Query Analytics这个功能。
Query Analytics面板如下:
左边栏的Filters可以按不同维度进行查询过滤,例如数据库、节点名、服务名等:
点击total列表里的sql,右下栏显示sql的详情,包括记录数、查询时间、锁表时间等指标:
1) MySQL监控方案PMM之PMM Server的安装
2)一个PMM Server部署问题解决办法
3)MySQL监控方案PMM之PMM Client的安装
4)PMM添加MySQ监控服务