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

相关推荐
老邓计算机毕设4 分钟前
SSM智慧社区信息化服务平台4v5hv(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·智慧社区、·信息化平台
麦聪聊数据24 分钟前
为何通用堡垒机无法在数据库运维中实现精准风控?
数据库·sql·安全·低代码·架构
2301_7903009629 分钟前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python
m0_736919101 小时前
用Pandas处理时间序列数据(Time Series)
jvm·数据库·python
亓才孓1 小时前
[JDBC]PreparedStatement替代Statement
java·数据库
m0_466525291 小时前
绿盟科技风云卫AI安全能力平台成果重磅发布
大数据·数据库·人工智能·安全
爱学习的阿磊2 小时前
使用Fabric自动化你的部署流程
jvm·数据库·python
枷锁—sha2 小时前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
惜分飞2 小时前
ORA-600 kcratr_nab_less_than_odr和ORA-600 4193故障处理--惜分飞
数据库·oracle
chian-ocean2 小时前
CANN 生态进阶:利用 `profiling-tools` 优化模型性能
数据库·mysql