1 PMM介绍
Percona Monitoring and Management(PMM)是一个开源的用于管理和监控MySQL、MongoDB和PostgreSQL性能的平台。它由Percona与托管数据库服务,支持和咨询领域的专家合作开发。PMM旨在为MySQL和MongoDB服务器提供全面的基于时间的分析,以确保数据尽可能高效地工作。
PMM平台基于简单的客户端-服务器模型,可实现高效的可扩展性。它包括以下模块:
- PMM Client:安装在每个要监视的数据库主机上。它收集服务器指标,一般系统指标和查询分析数据,以获得完整的性能概述。收集的数据发送到PMM服务器。
- PMM Server:PMM的核心部分,它聚合收集的数据,并以Web界面的表格,仪表板和图形的形式呈现。
PMM提供了对MyISAM、InnoDB、TokuDB和PXC/Glarera的监控,另外也提供了Query Analytics的功能,可以检视执行了哪些SQL指令,并对执行效能较差的语法进行优化。另外在新版本还支持了MySQL复制拓扑图结构构造。
PMM针对操作系统的部分也提供了硬盘、网络、CPU和RAM的监控,特别的是它提供了Context switches、Processes和interrupts的监控,Context Switches可以看到CPU上下切换文的状况,Processes可以方便了解系统有多少程序在等待I/O。
此外,PMM通过PMM客户端收集到的DB监控数据可以用第三方软件Grafana进行画图展示。
架构图如下:
更详细的介绍请参考官方文档:https://docs.percona.com/percona-monitoring-and-management/index.html
2 安装PMM Server
官方提供了多种安装方式,优缺点如下:
最常用的方式是Docker。
1)安装docker
参考文章:http://t.csdnimg.cn/N752u
如果你的机器可以连接外网的,用yum安装比较方便快捷。但是工作中的机器一般是内网环境,无法连互联网,所以只能通过二进制包安装。
2)下载PMM Server镜像
docker hub地址:https://hub.docker.com/r/percona/pmm-server
[root@zabbix6 ~]# docker pull percona/pmm-server:2
这里下载的是pmm-server2.x的最新版本。如果要下载最新版本可以改为执行:
docker pull percona/pmm-server:latest
3)创建持久数据卷容器
单独建数据卷容器的好处主要包括以下几点:
- 数据持久性:容器数据卷允许容器中的数据在容器被删除或重启后仍然存在,这可以确保数据在容器生命周期内得到保护和持久化存储。
- 数据共享:容器数据卷允许多个容器共享同一个数据卷,这可以方便地共享应用程序和数据。
- 数据安全性:使用容器数据卷将宿主机的目录或文件挂载到容器中,可以避免在容器中存储敏感数据,提高数据安全性和保密性。
- 容器可移植性:使用容器数据卷使容器代码和数据分离,这使得容器的迁移变得更加简单和便捷。
- 数据备份:使用容器数据卷可以简化数据备份过程,可以轻松地备份和还原数据。
就算有人误删了你的PMM-Server容器,有数据也可以进行恢复,不至于从删容器到跑路。
1.创建容器数据卷:
[root@zabbix6 srv]#
docker create --volume /srv
--name pmm-data
percona/pmm-server:2 /bin/true
PMM Server指定的数据卷为/srv,使用其他卷将导致升级时数据丢失。
command介绍:
- docker create:创建一个新容器;
- –volume:绑定挂载卷/srv;
- –name:为容器指定一个名称pmm-data;
- pmm-data percona/pmm-server:2:镜像名;
- /bin/true:设置退出码为0,在Linux底下,每一个程序执行完毕都会返回一个退出码,通常状况下0表示成功。
以上命令介绍可以通过执行docker --help
查看。
2.检查服务器和数据容器挂载点:
[root@zabbix6 srv]# docker inspect pmm-data | egrep "Destination|Source"
"Source": "/var/lib/docker/volumes/c08c5a4898c3a2340edc40ae531a6400e4e292d1b9a754fc66622475356a0413/_data",
"Destination": "/srv",
参数介绍:
- Destination:容器内目录;
- Source:对应宿主机目录。
检查下宿主机目录:
[root@zabbix6 _data]# ls /var/lib/docker/volumes/
alerting alertmanager backup clickhouse grafana logs nginx pmm-distribution postgres14 prometheus victoriametrics
4)创建并启动PMM Server容器
[root@zabbix6 _data]#
docker run --privileged --detach --restart always
--publish 443:443
--volumes-from pmm-data
--name pmm-server
percona/pmm-server:2
command介绍:
- docker run: 用于启动一个或多个容器。
- –detach: 容器将在后台运行并返回容器ID。
- –restart always: 指定重启策略,当容器退出时,该参数确保容器始终自动重新启动。
- –publish 443:443: 端口映射,冒号前是宿主机的端口,冒号后是容器内部的端口。任何访问宿主机的443端口的请求都会被转发到容器的相应端口。
- –volumes-from pmm-data: 引用pmm-data容器中的数据卷。
- –name pmm-server: 新创建的容器的名称pmm-server。
- percona/pmm-server:2: 要运行的Docker镜像的名称。
5)查看容器运行情况
[root@zabbix6 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c99a87c5718b percona/pmm-server:2 "/opt/entrypoint.sh" 18 minutes ago Up 18 minutes (healthy) 80/tcp, 0.0.0.0:443->443/tcp pmm-server
6)在web浏览器中查看PMM用户界面
访问 https://ip:443 在web浏览器中查看PMM用户界面,ip为PMM Server的地址。
默认的用户名和密码都是admin,第一次登录会提示修改密码。
首页如下:
至此,PMM Server部署完成。