外观
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 pemserver3. 安装 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 pemagent4. 访问 PEM Web 界面
- 打开浏览器,访问 PEM Web 界面:https://pem-server.example.com:8443/pem
- 使用默认用户名/密码登录:admin/admin
- 首次登录需要修改密码
- 配置 PEM 许可证(如果使用商业版)
PEM 监控配置
1. 添加监控目标
- 登录 PEM Web 界面
- 点击左侧菜单的 "Objects" -> "Add Server Group",创建服务器组
- 点击 "Objects" -> "Register Server",添加要监控的 PostgreSQL 服务器
- 填写服务器信息:
- 服务器名称
- 主机名或 IP 地址
- 端口号(默认 5432)
- 数据库名称
- 用户名和密码
- 点击 "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 postgresql3. 配置告警规则
- 点击左侧菜单的 "Alerts" -> "Alert Definitions",查看默认告警规则
- 点击 "Create" 创建新的告警规则
- 配置告警规则:
- 规则名称
- 监控指标
- 告警条件
- 严重程度(Critical、Warning、Info)
- 通知方式(邮件、短信、SNMP)
- 点击 "Save" 保存告警规则
PEM 性能分析功能
1. 实时性能监控
- Dashboard:查看数据库的实时性能概览
- Activity:监控当前数据库连接和查询
- Locks:查看当前锁的状态和等待情况
- Tables:监控表的大小、行数和访问统计
- Indexes:分析索引的使用情况和效率
2. 慢查询分析
sql
-- 使用 PEM 内置的慢查询分析功能
-- 通过 Web 界面查看慢查询详情:
-- 1. 点击 "Performance" -> "Slow Queries"
-- 2. 选择时间范围和数据库
-- 3. 查看慢查询列表和详细执行计划
-- 4. 分析慢查询的执行时间、等待事件和资源消耗3. 自动调优建议
PEM 提供了自动调优建议功能,可以根据数据库的实际运行情况,提供参数调优建议:
- 点击 "Performance" -> "Tuning Wizard"
- 选择要分析的数据库
- 点击 "Analyze" 开始分析
- 查看调优建议,包括:
- 内存参数调整
- 连接参数调整
- 锁参数调整
- 存储参数调整
- 应用调优建议或导出报告
PEM 管理功能
1. 数据库备份管理
- 点击 "Management" -> "Backup Jobs",创建备份任务
- 配置备份任务:
- 任务名称
- 备份类型(全量、增量、差异)
- 备份目标(本地、远程)
- 备份计划(定时、手动)
- 保留策略
- 点击 "Save" 保存备份任务
- 查看备份历史和状态
2. 数据库恢复管理
- 点击 "Management" -> "Restore Jobs",创建恢复任务
- 选择备份集和恢复目标
- 配置恢复选项:
- 恢复到新数据库或覆盖现有数据库
- 恢复时间点
- 恢复对象(全库、表、schema)
- 点击 "Restore" 开始恢复
- 监控恢复进度和状态
3. 用户和权限管理
- 点击 "Administration" -> "Users",管理 PEM 用户
- 点击 "Create" 创建新用户
- 配置用户权限:
- 角色(管理员、操作员、查看者)
- 服务器组访问权限
- 功能模块访问权限
- 点击 "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 与开源监控工具的主要区别:
| 特性 | PEM | Prometheus+Grafana |
|---|---|---|
| 部署复杂度 | 较高 | 中等 |
| 功能完整性 | 全面(监控、告警、管理、调优) | 主要是监控和可视化 |
| 易用性 | 高(Web 界面操作简单) | 中等(需要配置多种组件) |
| 技术支持 | 商业支持(商业版) | 社区支持 |
| 扩展性 | 中等 | 高(丰富的插件生态) |
| 成本 | 商业版收费,社区版免费但功能有限 | 免费 |
Q3:如何升级 PEM 版本?
A3:升级 PEM 版本的步骤:
- 备份 PEM 数据库和配置文件
- 停止 PEM 服务器和代理服务
- 安装新版本的 PEM 包
- 运行升级脚本
- 启动 PEM 服务器和代理服务
- 验证升级结果
Q4:如何排查 PEM 监控数据缺失问题?
A4:排查 PEM 监控数据缺失的步骤:
- 检查 PEM 代理服务是否正常运行
- 检查 PEM 服务器和代理之间的网络连接
- 检查被监控 PostgreSQL 服务器的状态
- 查看 PEM 日志文件,检查是否有错误信息
- 检查被监控 PostgreSQL 服务器的监控扩展是否正常工作
Q5:如何配置 PEM 的高可用?
A5:配置 PEM 高可用的方法:
- 部署两台 PEM 服务器,配置主备关系
- 使用共享存储或复制技术同步 PEM 数据库
- 配置负载均衡器,实现 PEM Web 界面的高可用
- 配置 PEM 代理连接到主备 PEM 服务器
Q6:PEM 如何处理大规模部署?
A6:PEM 处理大规模部署的方法:
- 部署多个 PEM 代理,分担监控负载
- 使用服务器组管理被监控服务器
- 合理配置监控频率,避免过度监控
- 配置分布式存储,存储监控历史数据
- 使用 PEM 的批量管理功能,简化管理操作
Q7:如何导出 PEM 监控报告?
A7:导出 PEM 监控报告的方法:
- 点击 "Reports" -> "Create Report",选择报告类型
- 配置报告参数:
- 报告名称
- 时间范围
- 被监控服务器
- 报告内容
- 点击 "Generate" 生成报告
- 选择报告格式(PDF、HTML、CSV)
- 下载或发送报告
Q8:如何自定义 PEM 告警通知?
A8:自定义 PEM 告警通知的方法:
- 点击 "Alerts" -> "Notification Methods",创建通知方法
- 配置通知方法:
- 通知类型(邮件、短信、SNMP)
- 通知模板
- 通知目标
- 点击 "Save" 保存通知方法
- 在告警规则中关联通知方法
