一 : 介绍
Percona Monitoring and Management (PMM)是一款开源的用于管理和监控MySQL和MongoDB性能的开源平台,通过PMM客户端收集到的DB监控数据用第三方软件Grafana画图展示出来。在这个产品之前,Percona提供了Zabbix和Cacti的图形模板,也许是考虑到了用户部署起来繁琐等问题,Percona发布了PMM Docker镜像,用户只需要下载镜像运行就全部搞定,开箱即用相当easy!
二、架构
PMM架构如下图所示:

模块说明:
Query Analytics (QAN):用来展示MySQL慢查询日志。
Prometheus:是一个开源的服务监控系统和时间序列数据库,用来聚集DB的监控数据。
Grafana:将Prometheus里面的数据画图展示出来。
架构原理:
客户端(agent)向consul的kv中注册自己监控的服务信息
存储端(prometheus)从consul提供的服务发现服务地址去分别获取agent注册的信息,然后去一个个抽取exporter产生的监控数据
Grafana通过读取存储端存储的数据进行展示
图中的地址不是直接对外暴露的,有一层nginx转发
QAN的查询语句分析功能是通过另外的QAN服务单独进行分析并推入prometheus的
有一个MySQL实例用于存储整套系统的元数据信息。
还有一个大多数人不会投入使用的Orchestrator
三、部署
我们这边使用docker安装pmm server 方便快捷
使用Docker运行PMM服务器
PMM服务器的Docker映像位于percona pmm-server公共存储库中。如果打算从Docker镜像运行PMM Server,则主机必须能够运行Docker 1.12.6或更高版本,并具有网络访问权限。
1、docker安装
yum install -y docker
systemctl start docker
2、PMM Server安装
(1)下载PMM Server Docker镜像
设置阿里云镜像库加速docker下载
mkdir -p etc/docker
cat >/etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://kli7phym.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
第1步。拉取PMM服务器映像
docker pull percona pmm-server:latest
第2步。创建一个PMM数据容器
docker create \
-v opt/prometheus/data \
-v opt/consul-data \
-v var/lib/mysql \
-v var/lib/grafana \
--name pmm-data \
percona/pmm-server:latest bin/true
3、创建和运行 PMM Server Container ,METRICS_RETENTION=336h 参数为日志保留时间
docker run -d -p 8080:80 --volumes-from pmm-data --name pmm-server -e METRICS_RETENTION=336h --restart always percona/pmm-server:latest
至此 pmm 构建完毕
查看Doker运行状态

4、打开浏览器http://yourip:8080 访问即可
5、PMM Client安装
PMM Client是安装在你要监视的MySQL或MongoDB主机上的一组代理组件。组件收集关于一般系统和数据库性能的各种数据,并将该数据发送到相应的PMM服务器组件。
主要有以下5个部分

安装步骤
一般使用root用户访问安装PMM Client(以具有root权限的用户身份登录或能够运行命令的sudo权限)。确保要监控的机器和pmm server之间的网络是通的。
网上常见的标注安装步骤主要如下
(1)安装pmm-client
方法1:此方法常常由于安装 pmm-client时下载失败,也可以采用tar安装包解压安装。
step 1 制作yum源
yum -y install https://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-6.noarch.rpm
step 2 安装
yum -y install pmm-client
方法2:tar包方式安装
tep 1 下载执行文件
wget https://www.percona.com/downloads/pmm-client/pmm-client-1.1.1/binary/tarball/pmm-client-1.1.1.tar.gz
step 2 解压可执行文件
tar -zxvf pmm-client-1.1.1.tar.gz
step 3 进入 解压后的文件
cd pmm-client-1.1.1
step 4 执行 install 文件,进行安装
./install
(2)连接PMM Server
安装PMM Client之后,它不会自动连接到PMM Server。要将客户端连接到PMM服务器,请使用该命令指定IP地址。
pmm-admin config --server 10.1.0.44:8080
注意,如果PMM Server更改了默认端口80 ,请在服务器的IP地址之后指定。
如果成功执行,也说明了 PMM Client 已成功安装。
返回结果如下,验证OK。

3)增加MySQL监控
增加pmm-client监控账号
GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD ON *.* TO 'pmm'@'localhost' IDENTIFIED BY 'xxxxxxx' WITH MAX_USER_CONNECTIONS 10;
GRANT SELECT, UPDATE, DELETE, DROP ON performance_schema.* TO 'pmm'@'localhost';
增加pmm客户端监控mysql到pmm服务器
pmm-admin add mysql --user pmm --password xxxxxx
(4)查看

prometheus监控状态 http://10.1.0.44:8080/prometheus/targets

四、监控页面展示
http://10.1.0.44:8080/
OS系统

MySQL



五、pmm-admin 常用命令介绍
# 添加监控服务
pmm-admin add
# 检查PMM客户端和PMM服务器之间的网络连接。
pmm-admin check-network
# 配置PMM Client如何与PMM服务器通信。
pmm-admin config
# 打印任何命令和退出的帮助
pmm-admin help
# 打印有关PMM客户端的信息
pmm-admin info
# 出为此PMM客户端添加的所有监控服务
pmm-admin list
# 检查PMM服务器是否存活
pmm-admin ping
# 检查PMM服务器是否存活。
pmm-admin purge
# 清除PMM服务器上的度量数据
pmm-admin remove, pmm-admin rm
# 删除监控服务
pmm-admin repair
# 重启pmm
pmm-admin restart
# 打印PMM Client使用的密码
pmm-admin show-passwords
# 开启监控服务
pmm-admin start
# 停止监控服务
pmm-admin stop
# 在卸载之前清理PMM Client
pmm-admin uninstall




