当前位置: 首页 > news >正文

数据库监控工具——PMM

一、PMM 是什么?

Percona Monitoring and Management (PMM) 是一款开源的数据库监控与管理平台,专注于 MySQL、MongoDB、PostgreSQL 等数据库的性能优化、故障排查和健康管理。由 Percona 公司开发,集成了数据采集、可视化、分析和告警功能,帮助运维团队高效管理数据库集群。

二、核心架构

PMM 采用 客户端-服务端(Client-Server)架构

  1. PMM Client

    • 部署在目标数据库服务器上,负责收集数据库性能指标(如查询延迟、连接数、锁状态等)。

    • 支持通过 Exporter(如 node_exportermysqld_exporter)收集系统和数据库指标。

  2. PMM Server

    • 作为中心化服务,存储和分析从客户端收集的数据。

    • 基于以下组件构建:

      • Prometheus: 时间序列数据库(TSDB),用于存储监控数据。

      • Grafana: 提供可视化仪表盘,展示性能指标。

      • VictoriaMetrics(可选): 高性能时序数据库,替代 Prometheus 的存储。

      • ClickHouse(可选): 用于查询分析(Query Analytics)的日志存储。


三、核心功能

1. 数据库性能监控
  • 实时指标:CPU、内存、磁盘I/O、网络流量、数据库连接数、查询吞吐量等。

  • 深度数据库指标

    • MySQL: InnoDB 缓冲池状态、复制延迟、慢查询。

    • MongoDB: Oplog 延迟、分片状态、集合锁争用。

    • PostgreSQL: 事务提交率、WAL 文件生成、索引使用效率。

2. 查询分析(Query Analytics)
  • 自动抓取并分析 SQL 查询和 MongoDB 操作。

  • 统计查询执行时间、频率、资源消耗,识别慢查询或高负载操作。

  • 提供优化建议(如索引缺失、全表扫描)。

3. 日志管理
  • 集中收集和存储数据库日志(如 MySQL 错误日志、慢查询日志)。

  • 支持通过 Grafana 查看和搜索日志。

4. 可视化与仪表盘
  • 预置丰富的 Grafana 仪表盘模板,涵盖操作系统、数据库实例、复制集群等。

  • 支持自定义仪表盘和告警规则。

5. 告警与通知
  • 基于 Prometheus Alertmanager 配置告警规则(如复制中断、磁盘空间不足)。

  • 支持通过邮件、Slack、PagerDuty 等渠道发送通知。

6. 备份管理(集成 Percona XtraBackup)
  • 支持 MySQL 物理备份与恢复(需手动配置)。


四、适用场景

  1. 数据库性能优化

    • 识别慢查询、锁竞争、资源瓶颈。

  2. 故障排查

    • 快速定位数据库宕机或性能下降的根因。

  3. 容量规划

    • 分析历史负载趋势,预测未来资源需求。

  4. 多实例/集群监控

    • 集中管理分布式数据库集群(如 MySQL 主从复制、MongoDB 分片集群)。

五、安装与部署

1. PMM Server 部署
version: '3'
services:
  pmm-server:
    image: percona/pmm-server:3
    container_name: pmm-server
    ports:
      - "5443:8443"
      - "580:80"
    volumes:
      - ./pmm-data:/srv
    networks:
      - pmm-network
    restart: always
volumes:
  pmm-data:

networks:
  pmm-network:
    driver: bridge
2. PMM Client 安装
version: '3'
services:
  pmm-client:
    image: percona/pmm-client:3
    container_name: pmm-client
    environment:
      - PMM_AGENT_SERVER_ADDRESS=XXXX:5443 // server实际的ip
      - PMM_AGENT_SERVER_USERNAME=admin
      - PMM_AGENT_SERVER_PASSWORD=admin
      - PMM_AGENT_SERVER_INSECURE_TLS=1
      - PMM_AGENT_SETUP=1
      - PMM_AGENT_CONFIG_FILE=config/pmm-agent.yaml
    volumes:
      - ./pmm-client-data:/srv
      - ../db/slow.log:/usr/local/var/mysql/slow.log
    networks:
      - pmm-network
    restart: unless-stopped

networks:
  pmm-network:
    driver: bridge

3. 数据库配置

-- 开启性能记录
UPDATE performance_schema.setup_consumers 
SET ENABLED = 'YES' 
WHERE NAME LIKE '%statements%';

-- 开启所有 instruments
UPDATE performance_schema.setup_instruments 
SET ENABLED = 'YES', TIMED = 'YES' 
WHERE NAME LIKE '%statement/%';

-- 设置慢查询为 0,记录所有查询
SET GLOBAL long_query_time = 0;
SET GLOBAL slow_query_log = 1;
SET GLOBAL log_queries_not_using_indexes = 1;

4. pmm客户端配置

# 进入 PMM 客户端容器
docker exec -it pmm-client bash

# 修改 配置
pmm-admin add mysql \
    --query-source=perfschema \
    --username=XXX \ // 配置数据库实际信息
    --password='XXX' \ // 配置数据库实际信息
    --host=XXX \ // 配置数据库实际信息
    --port=3306 \ // 配置数据库实际信息
    --service-name=mysql-console \
    --query-examples=true

访问https://pmm服务地址

    相关文章:

  • 宠物医疗对接DeepSeek详细方案
  • 【Linux】进程间通信 续
  • FormData获取表单,发现有些字段没有获取到,
  • 鸿蒙Android4个脚有脚线
  • Gitlab配置personal access token
  • 从零开发基于Qt6的TCP/UDP网络调试助手:技术架构与实现细节
  • (二 十 三)趣学设计模式 之 解释器模式!
  • C++第一节:类与对象
  • Spring Cloud Alibaba 实战:轻松实现 Nacos 服务发现与动态配置管理
  • 华为OD-E卷 - 最大矩阵和 100分(java)
  • 三参数水质在线分析仪:从源头保障饮用水安全
  • 《2025年软件测试工程师面试》消息队列面试题
  • CSharp和Java
  • 【ThreeJS Basics 06】Camera
  • C++进阶(七)--STL--bitset(位图)的介绍与基本功能模拟实现
  • PyCharm环境配置实战:从搭建到优化的完整指南
  • 观察者模式的C++实现示例
  • Qt:事件
  • 【MySQL】用MySQL二进制包构建docker镜像
  • 基于javaweb的SpringBoot田径运动会管理系统设计和实现(源码+文档+部署讲解)
  • 文明网站建设方案/怎样搭建网站
  • 网页设计与网站建设基础/网络工程师培训班要多少钱
  • 微信分享网站短链接怎么做/最新引流推广方法
  • 怎么自己做网站推广/十大经典事件营销案例
  • 做网站还是自媒体更适合赚钱/网站页面分析作业
  • 网站开发下载/站长网站