使用容器实例创建 PostgreSQL 定制 OCI 监视预警和仪表盘
简介
此教程提供了在 Oracle Cloud Infrastructure (OCI) 上使用基于 Docker 的 Java 应用为 PostgreSQL 部署定制监视解决方案的分步说明。我们将演示如何使用基于虚拟机 (VM) 的容器为 OCI 中的非活动复制插槽和复制滞后创建定制预警和仪表盘。虽然当前设置侧重于监视 PostgreSQL 复制滞后和不活动复制插槽,但该设计非常灵活,可以通过修改应用程序代码轻松扩展以跟踪其他数据库度量。
目标
-
在 OCI 虚拟机上部署基于 Docker 的 Java 应用来监视 PostgreSQL。
-
使用部署的监视解决方案在 OCI 中为非活动复制插槽和复制滞后创建定制预警和仪表盘。
任务 1:下载和设置监视服务
-
从此处下载
Postgres-monitoring-services.zip
文件: Postgres-monitoring-services.zip 。 -
解压缩并按照
README.md
文件的说明来构建和运行应用程序。 -
Docker 构建和部署指令包含在存储库中。
注:项目存储库的
README.md
中已经提供了有关构建和推送 Docker 映像的说明。
任务 2:创建动态组
动态组允许容器 VM 访问 OCI 监视、OCI Vault 和 OCI 注册表等 OCI 服务,而无需使用硬编码凭据,也无需在映像中存储凭据。
使用以下信息:
- 名称:输入
psql_monitoring_with_container_vm_dg
。 -
匹配规则 :
ALL {resource.type = 'computecontainerinstance', resource.compartment.id = '<your-compartment-id>'}
注:
compartment.id
是将在其中创建容器实例的区间 OCID。
任务 3:配置网络(VCN 和服务网关)
要确保无缝通信,请将容器 VM 放在与 PostgreSQL 数据库系统相同的专用子网中。允许使用服务网关访问 OCI 服务。
Security List Rules(安全列表规则):
确保以下规则已添加到专用子网的安全列表中(如果尚不存在)。
类型 | 源 CIDR | 协议 | 端口 | 用途 |
---|---|---|---|---|
入站 | 私有子网 CIDR | TCP | 5432 | PostgreSQL 访问 |
出站 | 0.0.0.0/0 | 全部 | 全部 | 访问 OCI 服务 |
任务 4:使用 OCI Vault 进行安全密码存储
使用 OCI Vault 进行安全密码存储,以避免对数据库身份证明进行硬编码。
-
创建 Vault 并添加包含 PostgreSQL 口令的 Secret 。
-
记录 Vault Secret OCID 。
-
如果密钥已存在,请重用该密钥。
任务 5:定义 Oracle Cloud Infrastructure Identity and Access Management 策略
附加这些 OCI IAM 策略。
Allow dynamic-group psql_monitoring_with_container_vm_dg to read vaults in compartment <your-compartment-id>
Allow dynamic-group psql_monitoring_with_container_vm_dg to read secret-bundles in compartment <your-compartment-id>
Allow dynamic-group psql_monitoring_with_container_vm_dg to use metrics in compartment <your-compartment-id>
Allow dynamic-group psql_monitoring_with_container_vm_dg to read repos in compartment <your-tenancy-id>
任务 6:启动容器实例
转到 OCI 控制台,导航到 Developer Services 、 Container Artifact 、 Container Instances 和 Create Instance ,然后输入以下信息:
- VCN/子网:选择与数据库系统相同的值。
- 配置:选择 1 OCPU 和 4 GB 。
- Docker 映像:选择从 OCIR 。
-
环境变量:
DB_PASSWORD_VAULT_ID=<your-vault-secret-ocid> DB_SYSTEM_ID=<your-db-system-ocid> DB_PE=<your-db-system-private-endpoint-FQDN> DB_PSQL_USER=<your-db-user> METRIC_COMPARTMENT_ID=<your-compartment-id> METRIC_NAMESPACE=postgres_monitor_with_container_vm REPLICATION_LAG_METRIC_NAME=replication_lag_metric INACTIVE_SLOTS_METRIC_NAME=inactive_slot_metric MONITOR_INTERVAL_SEC=60
注:无需通过 OCI IAM 动态组授予访问权限。
任务 7:检查 OCI 控制台中的日志
转到 OCI 控制台,导航到开发人员服务、容器对象和容器实例,选择实例,然后单击容器选项卡以检查日志和运行时状态。
任务 8:在度量浏览器中查看度量
转到 OCI 控制台,导航到 Observability & Management 和 Metrics Explorer 并输入以下信息:
- 名称空间:输入
postgres_monitor_with_container_vm
。 - 度量:选择
replication_lag_metric
和inactive_slot_metric
。 - 筛选器:输入
DBSystemId = "<your-db-system-ocid>"
。
查询示例:
replication_lag_metric[1m]{DBSystemId = "<your-db-system-ocid>"}.mean()
任务 9:设置 OCI 通知主题和订阅
-
转到 OCI 控制台,导航到应用集成,然后单击通知。
-
创建主题。例如,
PostgresCustomMonitoringAlerts
。 -
添加订阅(电子邮件、Webhook 等)。
-
将此主题链接到预警以进行实时预警。
任务 10:为关键指标配置 OCI 监视预警
-
复制滞后预警
replication_lag_metric[1m]{DBSystemId = "<your-db-system-ocid>"}.max()
- 触发器:输入 > 1,000,000 (1 MB) 。
- 延迟:输入 5 分钟。
- 严重性:选择严重。
-
不活动的复制插槽警报
inactive_slot_metric[1h]{DBSystemId = "<your-db-system-ocid>"}.max()
- 触发器:输入 > 1 。
- 延迟:输入 2 小时。
- 严重性:选择警告。
-
缺少数据预警
- Metric(度量):选择
replication_lag_metric
。 - 触发器:输入 10 分钟内无数据。
- 严重性:选择错误。
- Metric(度量):选择
任务 11:创建定制仪表盘
-
转到 OCI 控制台,导航到可观测性和管理并单击仪表盘。
-
单击新建仪表盘。
-
使用度量图表或查询构建器添加小部件。
-
输入以下信息。
- 名称空间:输入
postgres_monitor_with_container_vm
。 - 度量:选择
replication_lag_metric
和inactive_slot_metric
。
- 名称空间:输入
-
自定义图表类型、筛选器和时间范围。
概要表
组件 | 用途 |
---|---|
动态组 | 授予 OCI 对容器 VM 的访问权限 |
OCI Vault | 安全数据库身份证明存储 |
OCI 注册表 | 主机 Docker 映像资料档案库 |
监视代理 | 收集定制 PostgreSQL 度量 |
预警 | 有关滞后、插槽和缺少数据的预警 |
容器 VM | 运行基于 Java 的监视工具 |
仪表板 | 实时可视化指标 |
无服务器和弹性架构亮点
-
无服务器架构:
- 使用容器 VM 部署,无需手动管理基础设施。
- OCI 可处理主机级故障的 VM 预配和恢复
优势:降低运营开销并提高容错能力。
-
自动容器重新启动:
- 容器使用默认重新启动策略进行设置。
- 如果应用程序崩溃或意外退出,则会自动重新启动。
优势:确保高可用性并尽可能减少停机时间。
-
基于度量的预警:
- 专用预警配置为在缺少预期度量时触发。
优势:作为故障安全机制,可检测无提示故障并启用早期预警。
故障排除和问题
-
连接性问题:
- 确保端口
5432
在子网的安全列表中处于打开状态。 - 确认已为专用访问附加服务网关。
- 确保端口
-
OCI IAM 权限错误:
- 验证动态组是否与正确的区间匹配。
- 确保实施所需的策略。
-
设置错误:
- 验证环境变量。
- 验证密钥和度量 OCID。
- 使用日志跟踪运行时故障。
相关链接
确认
- Authors — Kanaram Bhari Arvind Yadav(软件工程师— OCI 数据库,带 PostgreSQL)
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Create PostgreSQL Custom OCI Monitoring Alarms and Dashboard using Container Instances
G37665-01
Copyright ©2025, Oracle and/or its affiliates.