PMM(Percona Monitoring and Management)是一个开源的数据库监控和管理工具,主要用于监控 MySQL、MariaDB、MongoDB 和 PostgreSQL 等数据库的性能和健康状况。PMM 提供了一套可视化的界面,帮助数据库管理员和开发人员对数据库进行深度监控、性能优化和故障排查。
PMM 由两个主要组件组成:
1. PMM Server
PMM Server 是 PMM 的核心组件,负责收集和存储来自 PMM Client(被监控的数据库实例)提供的数据。PMM Server 提供了一个 Web 界面,通过该界面可以查看监控的数据、生成报告以及进行性能分析。
主要功能:
• 数据可视化:显示数据库的性能指标(如查询时间、连接数、慢查询等)。
• 自定义仪表板:可以根据需求自定义监控面板。
• 告警:设置阈值,超出时触发告警。
• 查询分析:通过查询分析功能,帮助优化数据库查询。
• 集中管理:集中管理多个数据库实例,获取所有数据库实例的状态和性能数据。
2. PMM Client
PMM Client 需要安装在需要监控的数据库所在的服务器上,它负责将数据库的性能数据发送到 PMM Server。
主要功能:
• 采集性能数据:采集数据库的健康状况和性能数据。
• 将数据发送到 PMM Server:定期将数据库性能数据发送到 PMM Server 进行分析和展示。
version: '3'
services:
pmm-server:
image: percona/pmm-server:latest
container_name: pmm-server
ports:
- 80:80
- 443:443
environment:
DISABLE_UPDATES: 1
restart: always
pmm-client:
image: percona/pmm-client:latest
container_name: pmm-client
environment:
PMM_AGENT_SERVER_ADDRESS: pmm-server:80
PMM_AGENT_SERVER_USERNAME: admin
PMM_AGENT_SERVER_PASSWORD: admin
PMM_AGENT_SERVER_INSECURE_TLS: 0
PMM_AGENT_SETUP: 1
depends_on:
- pmm-server
restart: always
PMM 的主要功能模块
1. PMM Admin Tool
• PMM Admin 是一个命令行工具,用于配置、管理和检查 PMM Agent 和 PMM Server。
• 用于将数据库实例连接到 PMM Server。
• 提供了以下几个主要命令:
• pmm-admin add: 用于将数据库实例添加到 PMM Server。
• pmm-admin config: 用于配置 PMM Server 和 PMM Client 的连接。
• pmm-admin list: 列出当前被监控的数据库实例。
• pmm-admin remove: 用于从 PMM Server 移除数据库实例。
2. Metrics (指标)
• PMM 收集了大量的性能指标,包括:
• 数据库连接数、查询延迟、慢查询。
• 各种数据库运行状况和资源使用情况(如 CPU、内存、磁盘 I/O 等)。
• 查询执行计划和慢查询分析。
3. QAN (Query Analytics)
• Query Analytics (QAN) 是 PMM 的查询分析工具。它可以帮助开发人员和DBA分析数据库查询性能,查找和优化慢查询,提升数据库整体性能。
4. Node Exporter
• PMM 使用 Prometheus Node Exporter 来收集操作系统层面的硬件、内存、CPU、磁盘、网络等指标。
5. Grafana Dashboards
• PMM 使用 Grafana 提供美观的仪表板,展示数据库和操作系统的性能数据。通过 Grafana,用户可以查看实时和历史性能指标、分析慢查询等。
PMM 的典型用例
• 性能监控:PMM 可以实时监控 MySQL、MongoDB、PostgreSQL 等数据库的性能,帮助发现潜在的瓶颈问题。
• 故障排查:PMM 提供丰富的数据库指标和查询分析功能,可以帮助定位数据库性能问题和查询效率低下的原因。
• 容量规划:PMM 可以记录数据库的历史数据,帮助团队进行容量规划,预测未来的资源需求。
PMM 客户端安装和配置示例
1. 配置 PMM Agent 与 Server 连接
pmm-admin config --server-url=https://admin:admin@pmm-server:80 --server-insecure-tls
2. 添加数据库实例
pmm-admin add mysql --user=root --password=root_password --host=localhost
3. 检查当前配置
pmm-admin list