PMM监控MongoDB

节点规划

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

先决条件,在安装之前,请确保您已具备以下条件:

  1. Docker 版本 17.03 或更高版本
  2. 支持 x86-64-v2 架构的 CPU
  3. 充足的系统资源(推荐: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 网页

https://10.0.0.250:8443

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.查看监控

相关推荐
李广坤5 小时前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
爱可生开源社区1 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
AI全栈实验室1 天前
MongoDB迁移金仓踩了5个坑,最后一个差点回滚
mongodb
随逸1771 天前
《从零搭建NestJS项目》
数据库·typescript
加号32 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏2 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐2 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再2 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest2 天前
数据库SQL学习
数据库·sql
jnrjian2 天前
ORA-01017 查找机器名 用户名 以及library cache lock 参数含义
数据库·oracle