Skip to content

PostgreSQL 企业监控

PEM 安装与配置

1. 系统要求

  • 操作系统:Linux(Red Hat/CentOS 7+,Ubuntu 16.04+)
  • PostgreSQL:9.6+ 或 EDB Postgres Advanced Server 9.6+
  • Java:OpenJDK 11 或 Oracle JDK 11
  • 内存:至少 4GB RAM,建议 8GB+
  • 磁盘:至少 50GB 可用空间

2. 安装 PEM 服务器

bash
# 下载 PEM 安装包
wget https://www.enterprisedb.com/downloads/postgres-enterprise-manager

# 安装 PEM 服务器
sudo rpm -i postgres-enterprise-manager-*.rpm

# 初始化 PEM 数据库
sudo /usr/edb/pem/bin/pem_init_db.sh -d /var/lib/edb/pem -U postgres -W

# 启动 PEM 服务器
sudo systemctl start pemserver
sudo systemctl enable pemserver

# 检查 PEM 服务器状态
sudo systemctl status pemserver

3. 安装 PEM 代理

bash
# 下载 PEM 代理安装包
wget https://www.enterprisedb.com/downloads/postgres-enterprise-manager-agent

# 安装 PEM 代理
sudo rpm -i postgres-enterprise-manager-agent-*.rpm

# 配置 PEM 代理
# 编辑 /usr/edb/pem/agent/etc/pemagent.conf 文件
sudo vim /usr/edb/pem/agent/etc/pemagent.conf

# 配置示例
# pem_server = https://pem-server.example.com:8443/pem
# pem_agent_key = /usr/edb/pem/agent/etc/pemagent.key
# pem_agent_crt = /usr/edb/pem/agent/etc/pemagent.crt

# 启动 PEM 代理
sudo systemctl start pemagent
sudo systemctl enable pemagent

# 检查 PEM 代理状态
sudo systemctl status pemagent

4. 访问 PEM Web 界面

  1. 打开浏览器,访问 PEM Web 界面:https://pem-server.example.com:8443/pem
  2. 使用默认用户名/密码登录:admin/admin
  3. 首次登录需要修改密码
  4. 配置 PEM 许可证(如果使用商业版)

PEM 监控配置

1. 添加监控目标

  1. 登录 PEM Web 界面
  2. 点击左侧菜单的 "Objects" -> "Add Server Group",创建服务器组
  3. 点击 "Objects" -> "Register Server",添加要监控的 PostgreSQL 服务器
  4. 填写服务器信息:
    • 服务器名称
    • 主机名或 IP 地址
    • 端口号(默认 5432)
    • 数据库名称
    • 用户名和密码
  5. 点击 "Save" 完成添加

2. 配置监控指标

sql
-- 在被监控的 PostgreSQL 服务器上启用监控扩展
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTENSION IF NOT EXISTS pg_stat_monitor;
CREATE EXTENSION IF NOT EXISTS pg_wait_sampling;

-- 配置扩展参数
ALTER SYSTEM SET shared_preload_libraries = 'pg_stat_statements,pg_stat_monitor,pg_wait_sampling';
ALTER SYSTEM SET pg_stat_statements.max = 10000;
ALTER SYSTEM SET pg_stat_statements.track = 'all';
ALTER SYSTEM SET pg_wait_sampling.history = 1000;
ALTER SYSTEM SET pg_wait_sampling.sample_rate = 0.01;

-- 重启 PostgreSQL 服务使配置生效
sudo systemctl restart postgresql

3. 配置告警规则

  1. 点击左侧菜单的 "Alerts" -> "Alert Definitions",查看默认告警规则
  2. 点击 "Create" 创建新的告警规则
  3. 配置告警规则:
    • 规则名称
    • 监控指标
    • 告警条件
    • 严重程度(Critical、Warning、Info)
    • 通知方式(邮件、短信、SNMP)
  4. 点击 "Save" 保存告警规则

PEM 性能分析功能

1. 实时性能监控

  • Dashboard:查看数据库的实时性能概览
  • Activity:监控当前数据库连接和查询
  • Locks:查看当前锁的状态和等待情况
  • Tables:监控表的大小、行数和访问统计
  • Indexes:分析索引的使用情况和效率

2. 慢查询分析

sql
-- 使用 PEM 内置的慢查询分析功能
-- 通过 Web 界面查看慢查询详情:
-- 1. 点击 "Performance" -> "Slow Queries"
-- 2. 选择时间范围和数据库
-- 3. 查看慢查询列表和详细执行计划
-- 4. 分析慢查询的执行时间、等待事件和资源消耗

3. 自动调优建议

PEM 提供了自动调优建议功能,可以根据数据库的实际运行情况,提供参数调优建议:

  1. 点击 "Performance" -> "Tuning Wizard"
  2. 选择要分析的数据库
  3. 点击 "Analyze" 开始分析
  4. 查看调优建议,包括:
    • 内存参数调整
    • 连接参数调整
    • 锁参数调整
    • 存储参数调整
  5. 应用调优建议或导出报告

PEM 管理功能

1. 数据库备份管理

  1. 点击 "Management" -> "Backup Jobs",创建备份任务
  2. 配置备份任务:
    • 任务名称
    • 备份类型(全量、增量、差异)
    • 备份目标(本地、远程)
    • 备份计划(定时、手动)
    • 保留策略
  3. 点击 "Save" 保存备份任务
  4. 查看备份历史和状态

2. 数据库恢复管理

  1. 点击 "Management" -> "Restore Jobs",创建恢复任务
  2. 选择备份集和恢复目标
  3. 配置恢复选项:
    • 恢复到新数据库或覆盖现有数据库
    • 恢复时间点
    • 恢复对象(全库、表、schema)
  4. 点击 "Restore" 开始恢复
  5. 监控恢复进度和状态

3. 用户和权限管理

  1. 点击 "Administration" -> "Users",管理 PEM 用户
  2. 点击 "Create" 创建新用户
  3. 配置用户权限:
    • 角色(管理员、操作员、查看者)
    • 服务器组访问权限
    • 功能模块访问权限
  4. 点击 "Save" 保存用户配置

PEM 最佳实践

1. 部署架构建议

  • 单服务器部署:适合小型环境,PEM 服务器和被监控服务器部署在同一台机器上
  • 分布式部署:适合大型环境,PEM 服务器和被监控服务器分离部署
  • 高可用部署:为 PEM 服务器配置高可用,避免单点故障

2. 监控策略建议

  • 监控频率:根据服务器重要性设置监控频率,关键服务器建议 1-5 分钟
  • 告警阈值:根据业务需求和系统负载调整告警阈值
  • 告警通知:配置多级告警通知,确保告警及时送达
  • 历史数据保留:根据存储容量设置历史数据保留时间,建议 30-90 天

3. 性能优化建议

  • PEM 服务器优化

    • 配置足够的内存和 CPU 资源
    • 使用 SSD 存储 PEM 数据库
    • 定期清理 PEM 数据库中的历史数据
  • 被监控服务器优化

    • 启用必要的监控扩展
    • 合理配置监控参数,避免过度监控
    • 定期更新监控扩展到最新版本

4. 安全配置建议

  • 网络安全

    • 使用防火墙限制 PEM 服务器的访问
    • 配置 SSL/TLS 加密 PEM 通信
    • 使用 VPN 连接 PEM 服务器
  • 认证安全

    • 启用强密码策略
    • 定期更换密码
    • 使用双因素认证(如果支持)
  • 权限控制

    • 遵循最小权限原则
    • 定期审计用户权限
    • 禁用不必要的功能模块

常见问题(FAQ)

Q1:PEM 支持监控哪些版本的 PostgreSQL?

A1:PEM 支持监控 PostgreSQL 9.6 及以上版本,以及 EDB Postgres Advanced Server 9.6 及以上版本。

Q2:PEM 与开源监控工具(如 Prometheus+Grafana)有什么区别?

A2:PEM 与开源监控工具的主要区别:

特性PEMPrometheus+Grafana
部署复杂度较高中等
功能完整性全面(监控、告警、管理、调优)主要是监控和可视化
易用性高(Web 界面操作简单)中等(需要配置多种组件)
技术支持商业支持(商业版)社区支持
扩展性中等高(丰富的插件生态)
成本商业版收费,社区版免费但功能有限免费

Q3:如何升级 PEM 版本?

A3:升级 PEM 版本的步骤:

  1. 备份 PEM 数据库和配置文件
  2. 停止 PEM 服务器和代理服务
  3. 安装新版本的 PEM 包
  4. 运行升级脚本
  5. 启动 PEM 服务器和代理服务
  6. 验证升级结果

Q4:如何排查 PEM 监控数据缺失问题?

A4:排查 PEM 监控数据缺失的步骤:

  1. 检查 PEM 代理服务是否正常运行
  2. 检查 PEM 服务器和代理之间的网络连接
  3. 检查被监控 PostgreSQL 服务器的状态
  4. 查看 PEM 日志文件,检查是否有错误信息
  5. 检查被监控 PostgreSQL 服务器的监控扩展是否正常工作

Q5:如何配置 PEM 的高可用?

A5:配置 PEM 高可用的方法:

  1. 部署两台 PEM 服务器,配置主备关系
  2. 使用共享存储或复制技术同步 PEM 数据库
  3. 配置负载均衡器,实现 PEM Web 界面的高可用
  4. 配置 PEM 代理连接到主备 PEM 服务器

Q6:PEM 如何处理大规模部署?

A6:PEM 处理大规模部署的方法:

  1. 部署多个 PEM 代理,分担监控负载
  2. 使用服务器组管理被监控服务器
  3. 合理配置监控频率,避免过度监控
  4. 配置分布式存储,存储监控历史数据
  5. 使用 PEM 的批量管理功能,简化管理操作

Q7:如何导出 PEM 监控报告?

A7:导出 PEM 监控报告的方法:

  1. 点击 "Reports" -> "Create Report",选择报告类型
  2. 配置报告参数:
    • 报告名称
    • 时间范围
    • 被监控服务器
    • 报告内容
  3. 点击 "Generate" 生成报告
  4. 选择报告格式(PDF、HTML、CSV)
  5. 下载或发送报告

Q8:如何自定义 PEM 告警通知?

A8:自定义 PEM 告警通知的方法:

  1. 点击 "Alerts" -> "Notification Methods",创建通知方法
  2. 配置通知方法:
    • 通知类型(邮件、短信、SNMP)
    • 通知模板
    • 通知目标
  3. 点击 "Save" 保存通知方法
  4. 在告警规则中关联通知方法