目前需求要求能实时监控分析 MySQL 慢查询,发现一个监控工具 PMM,部署简单,功能比较强大,用起来效果不错,分享下这个工具。
官方 demo 展示
需要安装一个 server,一个 client。
这里有个坑,开始我也是百度按照上面的教程安装,但是最后启动 agent 的时候死活连不上 server,最后还是去官网仔细看了看才发现 pmm 有两个大版本 1.x 和 2.x,server 和 client 版本必须一致。
这里介绍 2.x
server 部分
下载镜像
docker pull percona/pmm-server:2
创建数据卷
sudo docker create -v /srv --name pmm-data percona/pmm-server:2 /bin/true
创建容器
sudo docker run -d -p 80:80 -p 443:443 --volumes-from pmm-data --name pmm-server --restart always percona/pmm-server:2
server 部署启动好后,访问:IP:映射的端口 就能进入仪表盘界面。
初始账号密码 admin:admin
mysql 部分
如果是 msyql 5.6+ 版本 mysql 基本可以不用管。
MySQL 5.6+ 或 MariaDB 10.0+ 版本推荐使用 performance_schema
数据库参数设置
SET GLOBAL innodb_monitor_enable=all
innodb_monitor_enable=all
performance_schema=ON
MySQL 5.5 或 MariaDB 5.5 只能使用 slow-log 的模式
log_output=file
slow_query_log=ON
long_query_time=0
log_slow_admin_statements=ON
log_slow_slave_statements=ON
client 部分
这里是 centos7 的 rpm
yum install -y https://downloads.percona.com/downloads/pmm2/2.15.0/binary/redhat/7/x86_64/pmm2-client-2.15.0-6.el7.x86_64.rpm
启动 client
sudo pmm-admin config --server-insecure-tls --server-url=https://admin:admin@<IP Address>:443
添加监控项
sudo pmm-admin add mysql --query-source perfschema --host mysql地址 --username root --password mysql密码 mysql-perfschema-test
--query-source
支持两种模式,一种 perfschema,还有一种 slow-log
推荐 perfschema,mysql5.6 以上的 mysql 默认是开启了这个的不用去设置。
--disable-tablestats-limit
更改表的数量(默认值是 1000),超过该数量将禁用每个表的统计信息收集,可以使用这个配置,增大数量。
查看监控服务实例启动状态
pmm-admin list
Running 状态服务就启动好了。
移除监控实例
pmm-admin remove 实例名称
进入http://ip:/graph/d/pmm-qan/pmm-query-analytics端口
就能看到所有 sql 的分析了
具体使用就不去写了,可以参考: