要创建持久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:1.2.0 /bin/true
运行结果:
Unable to find image ‘percona/pmm-server:1.2.0‘ locally
1.2.0: Pulling from percona/pmm-server
45a2e645736c: Pull complete
fe1f1770c826: Pull complete
4f1bdb417453: Pull complete
a2f3207fd166: Pull complete
2f8fffdaf5ef: Pull complete
46e8ca929fde: Pull complete
5c89a1a51b6b: Pull complete
fceac4be9a77: Pull complete
fb79d7de9adf: Pull complete
Digest: sha256:b9e200c9bc66bb2c31d75d57852474cf00a292d3ccb8301fdd55cc6e25738e3d
Status: Downloaded newer image for percona/pmm-server:1.2.0
a93b2e74a10afe3b47e127e7ef43072cff8e9b060c2a0e1cbdf7a0baae8dd712
注意:
这个容器不运行,它只是为了确保在升级到更新的PMM - server映像时保留所有PMM数据。不要删除或重新创建这个容器,除非您打算删除所有PMM数据并从头开始。
前面的命令解释:
docker create
命令表示docker守护进程从镜像中创建容器。
- v
选项对volumes
进行指定初始化 。
--name
选项为容器指定一个自定义名称,用于在Docker网络中引用容器。例如名字:pmm-server
。
percona/pmm-server:1.2.0
是自源的镜像的名字和版本标识。
/bin/true
容器进行运行的命令。
要运行PMM服务器,请使用以下命令:
docker run -d \
-p 80:80 \
--volumes-from pmm-data \
--name pmm-server \
--restart always \
percona/pmm-server:1.2.0
e8e133c3af3669257debdbce89bd36080510b2b2be30b0595cf295eb891f7d42
前面的命令解释:
docker run
命令运行一个docker守护进程以运行容器。
- d
选项以分离模式(即在后台)启动容器。
- p
选项用于映射访问PMM服务器web UI的端口。如果端口80不可用,您可以使用- p 8080:80
将登录页面映射到端口8080。
--volumes-from
表示挂载容器来自前面步骤指定的pmm-data
。
--name
选项为容器指定一个自定义名称,用于在Docker网络中引用容器。例如名字:pmm-server
。
--restart
选项定义容器的重新启动策略。设置它始终确保Docker守护进程在启动时启动容器,如果容器退出,则重新启动它。
percona/pmm-server:1.2.0
是自源的镜像的名字和版本标识。
使用如下命令确认PMM 安装运行是否正确:
netstat -tpln|grep 80
通过使用运行容器的主机的IP地址连接到PMM Web界面来验证PMM服务器是否正在运行,然后在要监视的所有数据库主机上安装PMM Client
Component URL
PMM landing page http://172.31.27.176:80
Query Analytics (QAN web app) http://172.31.27.176/qan/
Metrics Monitor (Grafana) http://172.31.27.176/graph/User name: admin Password: admin
Orchestrator http://172.31.27.176/orchestrator
PMM客户端是安装在您要监视的MySQL或MongoDB主机的客户端和数据提供采集方。 组件收集关于一般系统和数据库性能的各种数据,并将该数据发送到相应的PMM服务器组件。
注意:
不应该在具有相同主机名的数据库服务器上安装代理,因为PMM服务器使用主机名来标识收集的数据。
安装PMM客户端
安装pmm-client软件包
sudo yum install pmm-client -y
将PMM客户端连接到PMM服务器
使用pmm-admin config --help
,查看帮助
pmm-admin config --server 172.31.27.176:80
OK, PMM server is alive.
PMM Server | 172.31.27.176:80
Client Name | ip-172-31-27-176
Client Address | 172.17.0.1
从以下操作也可以看出,pmm并不支持代理,是C/S构架。
pmm-admin check-network
检查结果:
PMM Network Status
Server Address | 172.31.27.176:80
ient Address | 172.17.0.1
* System Time
NTP Server (0.pool.ntp.org) | 2017-07-17 07:55:57 +0000 UTC
PMM Server | 2017-07-17 07:55:57 +0000 GMT
PMM Client | 2017-07-17 07:55:57 +0000 UTC
PMM Server Time Drift | OK
PMM Client Time Drift | OK
PMM Client to PMM Server Time Drift | OK
* Connection: Client --> Server
-------------------- -------
SERVER SERVICE STATUS
-------------------- -------
Consul API OK
Prometheus API OK
Query Analytics API OK
Connection duration | 75.404μs
Request duration | 625.358μs
Full round trip | 700.762μs
* Connection: Client <-- Server
---------------- ----------------- ----------------- ------- ---------- ---------
SERVICE TYPE NAME REMOTE ENDPOINT STATUS HTTPS/TLS PASSWORD
---------------- ----------------- ----------------- ------- ---------- ---------
linux:metrics ip-172-31-27-176 172.17.0.1:42000 DOWN YES -
mongodb:metrics ip-172-31-27-176 172.17.0.1:42003 DOWN YES -
When an endpoint is down it may indicate that the corresponding service is stopped (run ‘pmm-admin list‘ to verify).
If it‘s running, check out the logs /var/log/pmm-*.log
When all endpoints are down but ‘pmm-admin list‘ shows they are up and no errors in the logs,
check the firewall settings whether this system allows incoming connections from server to address:port in question.
Also you can check the endpoint status by the URL: http://172.31.27.176:80/prometheus/targets
防火墙开启与docker容器通信:
iptables -A INPUT -s 172.0.0.1/8 -j ACCEPT
service iptables save
pmm-admin check-network
再次查看结果,则通信正常。
PMM Network Status
Server Address | 172.31.27.176:80
Client Address | 172.17.0.1
* System Time
NTP Server (0.pool.ntp.org) | 2017-07-17 07:56:40 +0000 UTC
PMM Server | 2017-07-17 07:56:40 +0000 GMT
PMM Client | 2017-07-17 07:56:40 +0000 UTC
PMM Server Time Drift | OK
PMM Client Time Drift | OK
PMM Client to PMM Server Time Drift | OK
* Connection: Client --> Server
-------------------- -------
SERVER SERVICE STATUS
-------------------- -------
Consul API OK
Prometheus API OK
Query Analytics API OK
Connection duration | 67.174μs
Request duration | 595.339μs
Full round trip | 662.513μs
* Connection: Client <-- Server
---------------- ----------------- ----------------- ------- ---------- ---------
SERVICE TYPE NAME REMOTE ENDPOINT STATUS HTTPS/TLS PASSWORD
---------------- ----------------- ----------------- ------- ---------- ---------
linux:metrics ip-172-31-27-176 172.17.0.1:42000 OK YES -
mongodb:metrics ip-172-31-27-176 172.17.0.1:42003 OK YES -
pmm-admin add linux:metrics # 监控linux系统
pmm-admin add mongodb:metrics # 监控mongodb
pmm-admin add mongodb:queries --dev-enable # 此处为实验功能,所以需要加 --dev-enable
pmm-admin purge linux:metrics # 清除数据
pmm-admin purge mongodb:metrics
管理PMM客户端的一些命令说明:
# 添加监控服务
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-admin remove
# 修复安装
pmm-admin repair
# 重启pmm客户端
pmm-admin restart
# 打印PMM Client使用的密码
pmm-admin show-passwords
# 开启监控服务
pmm-admin start
# 停止监控服务
pmm-admin stop
# 在卸载之前清理PMM Client
pmm-admin uninstall
参考:
[1] https://www.percona.com/doc/percona-monitoring-and-management/index.html
[2] https://www.percona.com/doc/percona-repo-config/index.html
[3] https://www.percona.com/doc/percona-monitoring-and-management/architecture.html
[4] https://www.percona.com/doc/percona-monitoring-and-management/deploy/server/docker.html#run-server-docker
[5] https://www.percona.com/doc/percona-monitoring-and-management/pmm-admin.html