Percona Monitoring and Management是一个用于管理和监视MySQL、MongoDB、PostgreSQL和MariaDB性能的开源平台,我们可以在自己的环境中运行该插件,以实现最大的安全性和可靠性。它为数据库服务器提供了基于时间的全面分析,以确保您的数据尽可能高效地工作。
PMM可以说是同类最佳的开源数据库监视解决方案。它可以帮助您降低关键业务数据库环境的复杂性,优化性能并提高其安全性,无论它们位于何处或部署在何处。
PMM平台基于可扩展的客户端-服务器模型。 它包括以下模块:
1.PMM Client
每个PMM客户端收集有关常规系统和数据库性能的各种数据,并将该数据发送到相应的PMM服务器。
PMM客户端软件包包括以下内容:
为了确保从PMM客户端到PMM服务器的数据传输安全,所有导出器都可以使用SSL / TLS加密连接,并且它们与PMM服务器的通信受到HTTP基本身份验证的保护。
2.PMM Server
PMM服务器包括以下工具:
使用查询分析(QAN),您可以分析一段时间内的MySQL查询性能。除客户端QAN代理外,它还包括以下内容:
指标监视器提供了对MySQL或MongoDB服务器实例至关重要的指标的历史视图。它包括以下内容:
我们可以从PMM Server Web界面(登录页面)访问所有工具。
1.PMM Server
# 拉取镜像
Docker pull percona/pmm-server:2.9.1
# 建立持久化数据卷
docker create --volume /srv --name pmm-data percona/pmm-server:2.9.1 /bin/true
# 启动server
docker run --detach --restart always --publish 80:80 --publish 443:443 --volumes-from pmm-data --name pmm-server percona/pmm-server:2.9.1
2.PMM Client
(1)添加基础监控
# 1.安装client
# pmm-client 和 pmm-server版本一定要匹配,都为2 或 都为1。
# percona/pmm-server:latest 的版本为1.X
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install pmm2-client
# 2.配置并连接server
# pmm-admin config --server-insecure-tls --server-url=https://admin:admin@192.168.3.101:443
Checking local pmm-agent status...
pmm-agent is running.
Registering pmm-agent on PMM Server...
Registered.
Configuration file /usr/local/percona/pmm2/config/pmm-agent.yaml updated.
Reloading pmm-agent configuration...
Configuration reloaded.
Checking local pmm-agent status...
pmm-agent is running.
# 3. 查看监控列表
# pmm-admin list
Service type Service name Address and port Service ID
Agent type Status Agent ID Service ID
pmm_agent Connected /agent_id/83d7c918-099f-4f62-aab8-c2024b0f1227
node_exporter Running /agent_id/83e09526-d877-4019-a574-a8da90e6dcbc
pmm client 与server 建立连接后,默认使用node_exporter收集服务器CPU、Memory、Disk等基本状态信息。
通过Grafana展示如下:
此时是没有数据库监控信息的,我们需要再手动添加。
(2)添加mysql监控
# 1.添加监控账户
grant all on *.* to grafana@'%' identified by 'grafana';
# 2.添加mysql监控
pmm-admin add mysql --username=grafana --password=grafana --query-source=perfschema --service-name=perfschema-mysql --host=127.0.0.1 --port=3306 --disable-tablestats-limit=50000
# 3.查看监控
# pmm-admin list
Service type Service name Address and port Service ID
MySQL perfschema-mysql 127.0.0.1:3306 /service_id/ea7032c2-1000-47b3-84e7-f2d41c58a065
Agent type Status Agent ID Service ID
pmm_agent Connected /agent_id/83d7c918-099f-4f62-aab8-c2024b0f1227
node_exporter Running /agent_id/83e09526-d877-4019-a574-a8da90e6dcbc
mysqld_exporter Running /agent_id/cb95c179-58e7-46d1-a43e-76874df07889 /service_id/ea7032c2-1000-47b3-84e7-f2d41c58a065
mysql_perfschema_agent Running /agent_id/f920ffe3-2f79-4be9-ad65-93ef5fbe19a3 /service_id/ea7032c2-1000-47b3-84e7-f2d41c58a065
# 4. 删除监控
pmm-admin remove mysql perfschema-mysql
其他数据监控请自行添加。
1.Mysql实例状态监控
2. 查询分析
查询分析仪表板显示查询的执行方式以及花费时间。它可以帮助您分析一段时间内的数据库查询,优化数据库性能以及查找和纠正问题的根源。
查询分析仅支持MySQL和MongoDB。 MySQL的最低要求是:
查询分析数据的检索不是即时的,并且可能由于网络条件而延迟。 在这种情况下,不会报告任何数据,并且迷你图中会出现间隙。
通过PMM我们可以更加直观的查看数据库服务器及各种数据库的状态,利用其Query Analytics特性可以更好的分析指定时间段的数据库查询,这对于优化数据库性能、查找问题十分有效。