使用容器執行處理建立 PostgreSQL 自訂 OCI 監控警示和儀表板
簡介
本教學課程提供使用 Docker 型 Java 應用程式在 Oracle Cloud Infrastructure (OCI) 上部署 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 保存庫及 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 服務。
安全清單規則:
請確定已將下列規則新增至專用子網路的安全清單 (如果還沒有這些規則的話)。
Type | 來源 CIDR | 協定 | 連接埠 | 目的 |
---|---|---|---|---|
傳入 | 專用子網 -CIDR | TCP | 5432 | PostgreSQL 存取 |
傳出 | 0.0.0.0/0 | 全部 | 全部 | 存取 OCI 服務 |
工作 4:使用 OCI Vault 作為安全密碼儲存體
使用 OCI Vault 進行安全密碼儲存,以避免硬式編碼資料庫證明資料。
-
建立保存庫,然後新增包含 PostgreSQL 密碼的 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 主控台,瀏覽至開發人員服務、容器使用者自建物件、容器執行處理、建立執行處理,然後輸入下列資訊:
- 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 小時。
- 嚴重度:選取警告。
-
遺漏資料警示
- 測量結果:選取
replication_lag_metric
。 - 觸發程式:輸入 10 分鐘內沒有資料。
- 嚴重度:選取錯誤。
- 測量結果:選取
工作 11:建立自訂儀表板
-
前往 OCI 主控台,瀏覽至可觀測性與管理,然後按一下儀表板。
-
按一下新建儀表板。
-
使用測量結果圖表或查詢製作器新增小工具。
-
請輸入下列資訊。
- 命名空間:輸入
postgres_monitor_with_container_vm
。 - 測量結果:選取
replication_lag_metric
和inactive_slot_metric
。
- 命名空間:輸入
-
自訂圖表類型、篩選條件及時間範圍。
摘要表格
元件 | 目的 |
---|---|
動態群組 | 授予容器 VM 的 OCI 存取權 |
OCI 保存庫 | 安全的資料庫證明資料儲存 |
OCI 登錄 | 主機 Docker 映像檔儲存區域 |
監督代理程式 | 收集自訂 PostgreSQL 度量 |
警訊 | 延遲、槽位、遺漏資料的警示 |
容器 VM | 執行以 Java 為基礎的監控工具 |
儀表板 | 即時視覺化度量 |
無伺服器和彈性架構亮點
-
無伺服器架構:
- 使用容器 VM 部署,不需要手動管理基礎架構。
- OCI 會處理 VM 佈建和從主機層級失敗復原
優點:降低作業負荷並改善容錯能力。
-
自動容器重新啟動:
- 容器已設定預設重新啟動原則。
- 若應用程式發生錯誤或意外結束,會自動重新啟動。
優點:確保高可用性,並將停機時間降到最低。
-
以測量結果為基礎的警示:
- 專用警示設定為在遺漏預期的度量時觸發。
優點:當做故障安全防護措施,以偵測無訊息故障並啟用早期警示。
疑難排解和問題
-
連線問題 :
- 確定子網路的安全清單中已開啟連接埠
5432
。 - 已連附確認服務閘道以進行專用存取。
- 確定子網路的安全清單中已開啟連接埠
-
OCI IAM 權限錯誤:
- 請檢查動態群組是否與正確的區間相符。
- 確定已制定必要的原則。
-
設定錯誤:
- 驗證環境變數。
- 驗證加密密碼和度量 OCID。
- 使用日誌追蹤程式實際執行失敗。
相關連結
確認
- 作者 - Arvind Yadav,Kanaram Bhari (軟體工程師 - OCI 資料庫與 PostgreSQL)
其他學習資源
在 docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Create PostgreSQL Custom OCI Monitoring Alarms and Dashboard using Container Instances
G37666-01
Copyright ©2025, Oracle and/or its affiliates.