Skip to content

PostgreSQL 企业数据库管理平台-PEM

PostgreSQL Enterprise Manager (PEM) 是EnterpriseDB开发的一款企业级PostgreSQL数据库管理和监控平台。它提供了集中化的管理界面,支持监控多个PostgreSQL实例、性能分析、告警管理、备份恢复等企业级功能。PEM适合需要管理大量PostgreSQL实例的企业环境,能够显著提高DBA团队的工作效率。

PEM架构与组件

PEM采用客户端-服务器架构,主要组件包括:

  • PEM Server:核心组件,负责收集和存储监控数据,提供Web服务
  • PEM Agent:部署在被监控主机上,收集本地PostgreSQL实例的监控数据
  • PEM Web Console:基于Web的管理界面,供DBA使用
  • PEM Database:存储PEM的配置信息和监控数据
  • PostgreSQL Instance:被监控的PostgreSQL数据库实例

安装与部署

环境要求

组件版本要求
PEM Server10.0+
PEM Agent10.0+
PostgreSQL9.6+
操作系统RHEL/CentOS 7+, Ubuntu 18.04+, Windows Server 2016+
JavaOpenJDK 8+

安装PEM Server

在RHEL/CentOS上安装

bash
# 添加EnterpriseDB仓库
sudo yum install -y https://yum.enterprisedb.com/enterpriseDB-repo.rpm

# 安装PEM Server
sudo yum install -y edb-pem-server

# 初始化PEM数据库
sudo /usr/edb/pem/bin/configure-pem-server.sh

# 启动PEM服务
sudo systemctl start edb-pem-server
sudo systemctl enable edb-pem-server

在Ubuntu上安装

bash
# 添加EnterpriseDB仓库
sudo apt-get install -y wget lsb-release
wget -q -O - https://yum.enterprisedb.com/ENTERPRISEDB-GPG-KEY | sudo apt-key add -
echo "deb https://apt.enterprisedb.com/$(lsb_release -cs)-edb/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/edb-$(lsb_release -cs).list

# 安装PEM Server
sudo apt-get update
sudo apt-get install -y edb-pem-server

# 初始化PEM数据库
sudo /usr/edb/pem/bin/configure-pem-server.sh

# 启动PEM服务
sudo systemctl start edb-pem-server
sudo systemctl enable edb-pem-server

安装PEM Agent

在RHEL/CentOS上安装

bash
# 安装PEM Agent
sudo yum install -y edb-pem-agent

# 注册PEM Agent到PEM Server
sudo /usr/edb/pem/bin/configure-agent.sh \
  --pem-server=192.168.1.100 \
  --agent-user=pemagent \
  --pem-port=8443 \
  --ssl-cert=/usr/edb/pem/ssl/pemcert.pem

# 启动PEM Agent
sudo systemctl start edb-pem-agent
sudo systemctl enable edb-pem-agent

在Ubuntu上安装

bash
# 安装PEM Agent
sudo apt-get install -y edb-pem-agent

# 注册PEM Agent到PEM Server
sudo /usr/edb/pem/bin/configure-agent.sh \
  --pem-server=192.168.1.100 \
  --agent-user=pemagent \
  --pem-port=8443 \
  --ssl-cert=/usr/edb/pem/ssl/pemcert.pem

# 启动PEM Agent
sudo systemctl start edb-pem-agent
sudo systemctl enable edb-pem-agent

访问PEM Web Console

安装完成后,可以通过浏览器访问PEM Web Console:

  • 默认URL:https://<pem-server-ip>:8443/pem
  • 默认用户名:enterprisedb
  • 默认密码:password(首次登录需要修改)

监控功能

实例监控

PEM提供了全面的PostgreSQL实例监控功能:

  • 实时监控仪表板:显示实例的关键指标,包括连接数、CPU使用率、内存使用率、磁盘I/O等
  • 性能趋势分析:提供历史性能数据的趋势图,支持自定义时间范围
  • TOP SQL查询:显示执行时间最长、调用次数最多的SQL语句
  • 索引使用率分析:分析索引的使用情况,识别未使用的索引
  • 表膨胀监控:监控表和索引的膨胀情况,提供膨胀率报告

警报管理

PEM的警报系统允许DBA配置基于阈值的告警规则:

  • 预定义告警模板:提供了常用的告警模板,如连接数过高、磁盘空间不足等
  • 自定义告警规则:支持基于任何监控指标创建自定义告警规则
  • 多渠道告警通知:支持通过Email、SNMP、Syslog等方式发送告警
  • 告警升级机制:支持告警升级,确保告警能够及时得到处理
  • 告警历史记录:保存所有告警的历史记录,便于分析和审计

性能分析

PEM提供了强大的性能分析工具:

  • Query Analyzer:分析SQL语句的执行计划,识别性能瓶颈
  • Performance Comparison:比较不同时间段的性能数据,识别性能变化趋势
  • Wait Event Analysis:分析PostgreSQL的等待事件,识别系统瓶颈
  • Replication Monitor:监控主从复制状态,包括复制延迟、同步状态等
  • WAL监控:监控WAL生成和归档情况,确保数据安全性

资源管理

PEM支持对PostgreSQL资源的集中管理:

  • 表空间管理:监控和管理表空间的使用情况
  • 连接池管理:监控和配置连接池(如PgBouncer)
  • 资源组管理:支持PostgreSQL 10+的资源组功能,实现资源隔离
  • 存储管理:监控磁盘空间使用情况,预测存储空间需求

管理功能

集中化管理

PEM提供了集中化的PostgreSQL实例管理功能:

  • 实例分组:支持将多个实例分组管理,便于批量操作
  • 统一配置管理:支持集中管理多个实例的配置参数
  • 批量操作:支持对多个实例执行批量操作,如重启、备份等
  • 版本管理:监控和管理PostgreSQL实例的版本信息
  • 扩展管理:集中管理PostgreSQL扩展,支持批量安装和升级

备份与恢复

PEM集成了备份和恢复功能:

  • 备份策略管理:支持创建和管理备份策略
  • 自动备份:根据备份策略自动执行备份操作
  • 备份验证:支持备份文件的验证,确保备份的完整性
  • 恢复管理:支持从备份文件恢复数据库,包括全量恢复和时间点恢复
  • 备份报告:提供备份执行情况的报告,包括成功/失败统计

用户与权限管理

PEM提供了完善的用户和权限管理功能:

  • 基于角色的访问控制:支持RBAC(基于角色的访问控制)
  • 细粒度权限控制:支持对不同功能模块的细粒度权限控制
  • 审计日志:记录所有用户操作,便于审计和合规性检查
  • LDAP集成:支持与LDAP目录服务集成,实现统一身份认证

自动化运维

PEM支持自动化运维功能,提高DBA团队的工作效率:

  • 自动化任务:支持创建和管理自动化任务,如Vacuum、Analyze等
  • 作业调度:支持基于时间的作业调度
  • 事件触发任务:支持基于事件触发的任务执行
  • 脚本管理:支持管理和执行SQL脚本,便于批量操作

最佳实践

部署架构

  • 小型部署:PEM Server和PEM数据库可以部署在同一台服务器上
  • 中型部署:建议将PEM Server和PEM数据库部署在不同的服务器上
  • 大型部署:建议使用高可用架构,包括PEM Server的负载均衡和PEM数据库的高可用

监控策略

  • 核心指标监控:重点监控连接数、TPS/QPS、缓存命中率、复制延迟等核心指标
  • 合理设置告警阈值:根据实际业务负载设置合适的告警阈值,避免误报
  • 定期性能分析:定期进行性能分析,识别潜在的性能问题
  • 容量规划:基于历史数据进行容量规划,预测未来的资源需求

安全配置

  • 启用SSL/TLS:确保PEM Server和PEM Agent之间的通信使用SSL/TLS加密
  • 限制访问IP:限制PEM Web Console和PEM Agent的访问IP
  • 定期更新密码:定期更新PEM用户的密码
  • 启用审计日志:启用PEM的审计日志功能,便于合规性检查

性能优化

  • 合理设置采样间隔:根据实际需求设置监控数据的采样间隔,避免过度采集
  • 优化PEM数据库:定期对PEM数据库进行Vacuum和Analyze操作
  • 限制监控数据保留时间:根据实际需求设置监控数据的保留时间,避免PEM数据库过大
  • 使用多个PEM Agent:对于大规模部署,建议在不同的主机上部署多个PEM Agent

常见问题与解决方案

PEM Agent无法连接到PEM Server

问题:PEM Agent无法注册到PEM Server或连接中断

解决方案

  • 检查网络连接是否正常
  • 验证PEM Server的IP地址和端口是否正确
  • 检查SSL证书配置是否正确
  • 查看PEM Agent日志(/var/log/edb/pem/agent.log)获取详细错误信息

监控数据缺失

问题:PEM Web Console中某些实例的监控数据缺失

解决方案

  • 检查PEM Agent是否正常运行
  • 验证被监控实例的连接配置是否正确
  • 检查被监控实例的权限配置
  • 查看PEM Server日志(/var/log/edb/pem/server.log)获取详细错误信息

性能问题

问题:PEM Web Console响应缓慢或PEM Server资源使用率过高

解决方案

  • 优化PEM数据库的性能
  • 增加PEM Server的资源配置(CPU、内存、磁盘)
  • 调整监控数据的采样间隔和保留时间
  • 减少同时监控的实例数量

备份失败

问题:PEM自动备份失败

解决方案

  • 检查备份策略配置是否正确
  • 验证备份目标路径的权限配置
  • 检查被监控实例的备份权限
  • 查看备份日志获取详细错误信息

版本差异注意事项

PEM版本差异

版本主要变化
PEM 10.x支持PostgreSQL 16,增强了性能监控功能
PEM 9.x改进了Web界面,增强了自动化运维功能
PEM 8.x引入了资源组管理,支持PostgreSQL 10+的资源隔离
PEM 7.x增强了备份和恢复功能,支持更多备份类型

PostgreSQL版本支持

PEM版本支持的PostgreSQL版本
PEM 10.xPostgreSQL 9.6 - 16
PEM 9.xPostgreSQL 9.5 - 15
PEM 8.xPostgreSQL 9.4 - 14
PEM 7.xPostgreSQL 9.3 - 13

与开源监控工具的比较

特性PEMPrometheus + GrafanaZabbix
价格商业版,需要许可证开源免费开源免费
易用性开箱即用,界面友好需要手动配置,学习曲线较陡配置复杂,学习曲线较陡
监控功能全面,企业级功能灵活,可扩展全面,支持多种监控类型
管理功能强大的管理功能主要专注于监控基本的管理功能
备份恢复集成备份恢复功能无,需要第三方工具无,需要第三方工具
支持规模适合大规模部署适合大规模部署适合大规模部署
技术支持企业级技术支持社区支持社区支持

部署架构建议

小型部署(1-10个PostgreSQL实例)

┌─────────────────┐
│  PEM Server     │
│  +              │
│  PEM Database   │
└─────────────────┘


┌─────────────────┐      ┌─────────────────┐
│  PEM Agent 1    │      │  PEM Agent 2    │
│  +              │      │  +              │
│  PostgreSQL 1   │      │  PostgreSQL 2   │
└─────────────────┘      └─────────────────┘

中型部署(10-50个PostgreSQL实例)

┌─────────────────┐      ┌─────────────────┐
│  PEM Server     │      │  PEM Database   │
└─────────────────┘      └─────────────────┘
         │                         ▲
         └─────────────────────────┘


┌─────────────────┐      ┌─────────────────┐
│  PEM Agent 1    │      │  PEM Agent N    │
│  +              │      │  +              │
│  PostgreSQL 1   │      │  PostgreSQL N   │
└─────────────────┘      └─────────────────┘

大型部署(50+个PostgreSQL实例)

┌─────────────────┐      ┌─────────────────┐
│  Load Balancer  │      │  PEM Database   │
└─────────────────┘      └─────────────────┘
         │                         ▲
         ▼                         │
┌─────────────────┐      ┌─────────────────┐
│  PEM Server 1   │      │  PEM Server 2   │
└─────────────────┘      └─────────────────┘
         │                         │
         └─────────────────────────┘


┌─────────────────┐      ┌─────────────────┐
│  PEM Agent 1    │      │  PEM Agent N    │
│  +              │      │  +              │
│  PostgreSQL 1   │      │  PostgreSQL N   │
└─────────────────┘      └─────────────────┘

PostgreSQL Enterprise Manager是一款功能强大的企业级PostgreSQL管理和监控平台,适合需要管理大量PostgreSQL实例的企业环境。通过PEM,DBA可以实现对PostgreSQL实例的集中化管理、全面监控和自动化运维,提高工作效率,确保数据库的稳定运行。

与开源监控工具相比,PEM提供了更全面的功能和更好的易用性,同时还提供了企业级的技术支持。对于大型企业和关键业务系统,PEM是一个值得考虑的PostgreSQL管理和监控解决方案。