节点规划
| IP地址 | 端口 | 角色 |
|---|---|---|
| 10.0.0.37 | 27017、7777 | mongodb、pmm-agent |
| 10.0.0.38 | 27017、7777 | mongodb、pmm-agent |
| 10.0.0.39 | 27017、7777 | mongodb、pmm-agent |
| 10.0.0.250 | 8443 | PMM-Server |
1.安装PMM Server
先决条件,在安装之前,请确保您已具备以下条件:
- Docker 版本 17.03 或更高版本
- 支持 x86-64-v2 架构的 CPU
- 充足的系统资源(推荐:2 个或更多 CPU 核心、4GB 或以上内存、100GB 或以上磁盘空间)

1.1 下载镜像
python
# 官方镜像
[root@PMM-SERVER ~]# docker pull percona/pmm-server:3
# 国内镜像源-收费
[root@PMM-SERVER ~]# docker login docker.xuanyuan.run
[root@PMM-SERVER ~]# docker pull docker.xuanyuan.run/percona/pmm-server:3.5.0

1.2 运行容器
python
[root@PMM-SERVER ~]# docker volume create pmm-data
pmm-data
[root@PMM-SERVER ~]# docker network create pmm-network
388c3d0338f52beb67bb4a9c88da71a9fd0f1faa2ac45ad3aada9412d79dd6d5
[root@PMM-SERVER ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.xuanyuan.run/percona/pmm-server 3.5.0 41d039738e7f 2 months ago 2.66GB
docker run --detach --restart always \
--memory=4g \
--publish 8443:8443 \
--volume pmm-data:/srv \
--network=pmm-network \
--name pmm-server \
--env PMM_DATA_RETENTION=720h \
--env METRICS_RESOLUTION_HR=10s \
--env PMM_ENABLE_UPDATES=false \
docker.xuanyuan.run/percona/pmm-server:3.5.0
[root@PMM-SERVER ~]# docker ps
# 删除容器
docker stop pmm-server
docker rm pmm-server
docker volume rm pmm-data
docker network rm pmm-network

1.3 修改pmm-server管理员密码
python
docker exec -t pmm-server change-admin-password Wl123456#

1.4 访问 PMM 网页

1.5 环境变量说明
性能与存储
| 变量名 | 默认值 | 描述 | 示例 |
|---|---|---|---|
| PMM_DATA_RETENTION | 30d | 指标数据保留时长(必须是24小时的倍数) | 720h (30天) |
| PMM_METRICS_RESOLUTION | 1s | 基础指标收集间隔 | 5s |
| PMM_METRICS_RESOLUTION_HR | 5s | 高分辨率指标间隔 | 10s |
| PMM_METRICS_RESOLUTION_MR | 10s | 中分辨率指标间隔 | 30s |
| PMM_METRICS_RESOLUTION_LR | 60s | 低分辨率指标间隔 | 300s |
功能控制
| 变量名 | 默认值 | 启用时的效果 |
|---|---|---|
| PMM_ENABLE_UPDATES | true | 允许版本检查和 UI 更新 |
| PMM_ENABLE_TELEMETRY | true | 启用使用数据收集 |
| PMM_ENABLE_ALERTING | true | 启用 Percona 告警系统 |
| PMM_ENABLE_BACKUP_MANAGEMENT | true | 启用备份管理功能 |
| PMM_ENABLE_AZURE_DISCOVER | false | 启用 Azure 数据库发现 |
| PMM_ENABLE_INTERNAL_PG_QAN | 0 (禁用) |
为 PMM Server 的内部 PostgreSQL 启用查询分析(用于故障排除或 HA 场景) |
2.安装PMM-Client
所有mongodb节点
2.1 下载安装
python
[root@MongoDB-07 ~]# wget https://downloads.percona.com/downloads/pmm3/3.5.0/binary/tarball/pmm-client-3.5.0-x86_64.tar.gz
[root@MongoDB-07 ~]# tar xfz pmm-client-3.5.0-x86_64.tar.gz && cd pmm-client-3.5.0
[root@MongoDB-07 ~]# export PMM_DIR=/usr/local/percona/pmm
[root@MongoDB-07 ~]# sudo ./install_tarball
[root@MongoDB-07 ~]# echo 'PATH=$PATH:/usr/local/percona/pmm/bin' >> /etc/profile
[root@MongoDB-07 ~]# source /etc/profile
2.2 生成配置文件
python
# 每个mongodb节点按照自己的信息生成
pmm-agent setup \
--config-file=/usr/local/percona/pmm/config/pmm-agent.yaml \
--server-address=10.0.0.250:8443 \
--server-insecure-tls \
--server-username=admin \
--server-password=Wl123456# \
10.0.0.37 \
generic \
MongoDB-07

2.3 编辑system启动文件
python
vi /usr/lib/systemd/system/pmm-agent.service
[Unit]
Description=Percona Monitoring and Management Agent
Documentation=https://www.percona.com/doc/percona-monitoring-and-management/index.html
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/percona/pmm/bin/pmm-agent --config-file=/usr/local/percona/pmm/config/pmm-agent.yaml
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
# 以上配置会将日志写入到系统日志/var/log/messages,如果系统高于CentOS-9,可以用下面的配置自定义日志输出路径
#StandardOutput=append:/var/log/pmm-agent/pmm-agent.log
#StandardError=append:/var/log/pmm-agent/pmm-agent-error.log
[Install]
WantedBy=multi-user.target
2.4 启动pmm-agent
python
systemctl daemon-reload
systemctl start pmm-agent
systemctl enable pmm-agent
3.监控MongoDB
3.1 创建角色
python
db.getSiblingDB("admin").createRole({
"role": "pmmMonitor",
"privileges": [
{
"resource": { "db": "", "collection": "" },
"actions": [ "dbHash", "find", "listIndexes", "listCollections", "collStats", "dbStats", "indexStats" ]
},
{
"resource": { "db": "", "collection": "system.version" },
"actions": [ "find" ]
},
{
"resource": { "db": "", "collection": "system.profile" },
"actions": [ "dbStats", "collStats", "indexStats" ]
}
],
"roles": [ ]
})
3.2 创建用户
python
db.getSiblingDB("admin").createUser({
"user": "pmm",
"pwd": "123",
"roles": [
{ "db": "admin", "role": "pmmMonitor" },
{ "db": "local", "role": "read" },
{ "db": "admin", "role": "clusterMonitor" }
]
})
3.3 为 MongoDB 查询分析配置查询源
其实就是配置系统日志,已经配置过可以忽略
python
# 在 mongod.conf 中添加
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
3.4 将 MongoDB 服务添加到 PMM 中
3.4.1 添加单机
python
pmm-admin add mongodb MongoDB-07-mongodb \
--username=pmm # MongoDB 监控专用账号(需提前创建)
--password=123 # 账号密码
--host=10.0.0.37 # MongoDB 监听地址
--port=27017 # MongoDB 端口
--service-name=prod-mongodb-07 # 自定义服务名(便于识别)
--enable-all-collectors # 启用所有指标收集器
3.4.2 添加副本集或集群
python
# 根据每个mongodb节点的信息配置
pmm-admin add mongodb MongoDB-07 \
--username=pmm \
--password=123 \
--host=10.0.0.37 \
--port=27017 \
--environment=prod \
--cluster=prod-myrs01 \
--replication-set=myrs01 \
--service-name=myrs01-node01 \
--enable-all-collectors \
--query-source=mongolog

4.查看监控
