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

相关推荐
Funky_oaNiu2 小时前
Oracle如何将用户下的一个表空间的数据迁移到另一个表空间
数据库·oracle
爱学习的阿磊2 小时前
使用XGBoost赢得Kaggle比赛
jvm·数据库·python
Full Stack Developme2 小时前
数据存储的底层都是字符,但在使用时候怎么能变化出各种字段类型
数据库
什么都不会的Tristan2 小时前
MySQL篇
数据库·mysql
Geoking.2 小时前
Redis 的 RDB 与 AOF:持久化机制全解析
数据库·redis·缓存
鱼跃鹰飞3 小时前
面试题:说一说redis和Memcached的区别
数据库·redis·memcached
深念Y3 小时前
中兴微随身WiFi 板号UZ901_v1.6 影腾Y1新版本 增加SIM卡槽 开启ADB 去云控 改串号教程 下
数据库·adb
顾西爵霞3 小时前
远程访问centos7并连接Mariadb
数据库·centos·mariadb
m0_748229993 小时前
Laravel7.x核心特性全解析
c语言·数据库·c#