コンテナ・インスタンスを使用した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のビルドおよびデプロイメントの手順がリポジトリに含まれています。
ノート: Dockerイメージを構築およびプッシュする手順は、プロジェクト・リポジトリの
README.md
ですでに使用可能です。
タスク2: 動的システム・グループの作成
動的グループを使用すると、コンテナVMは、ハードコードされた資格証明を使用せずに、イメージに資格証明を格納することなく、OCI Monitoring、OCI Vault、OCI Registryなどの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サービスへのアクセスを有効にします。
セキュリティ・リスト・ルール:
次のルールがプライベート・サブネットのセキュリティ・リスト(まだ存在しない場合)に追加されていることを確認します。
入力してください | ソースCIDR | プロトコル | ポート | 目 的 |
---|---|---|---|---|
イングレス | private-subnet-CIDR | TCP | 5432 | PostgreSQLアクセス |
エグレス | 0.0.0.0/0 | すべて | すべて | OCIサービスへのアクセス |
タスク4: セキュアなパスワード記憶域でのOCI Vaultの使用
データベース資格証明のハードコードを回避するために、セキュアなパスワード記憶域にOCI Vaultを使用します。
-
Vaultを作成し、PostgreSQLパスワードを含むシークレットを追加します。
-
Vaultシークレット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コンソールに移動し、「監視および管理」、「メトリック・エクスプローラ」に移動して、次の情報を入力します:
- ネームスペース:
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
です。 -
「サブスクリプション」(電子メール、Webフックなど)を追加します。
-
このトピックをアラームにリンクして、リアルタイム・アラートを生成します。
タスク10: 主要なメトリックのOCIモニタリング・アラームの構成
-
レプリケーション・ラグ・アラーム
replication_lag_metric[1m]{DBSystemId = "<your-db-system-ocid>"}.max()
- トリガー: > 1,000,000 (1MB)と入力します。
- 遅延: 5分を入力します。
- 重大度: 「クリティカル」を選択します。
-
非アクティブなレプリケーションスロットのアラーム
inactive_slot_metric[1h]{DBSystemId = "<your-db-system-ocid>"}.max()
- トリガー: > 1と入力します。
- 遅延: 2時間を入力します。
- 重大度: 「警告」を選択します。
-
データアラームがありません
- メトリック:
replication_lag_metric
を選択します。 - トリガー: 「No data for 10 minutes」を入力します。
- 重大度: 「エラー」を選択します。
- メトリック:
タスク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権限エラー:
- 動的グループが正しいコンパートメントと一致することを確認します。
- 必要なポリシーが設定されていることを確認します。
-
設定エラー:
- 環境変数を検証します。
- シークレットおよびメトリックOCIDsを確認します。
- ログを使用してランタイムの失敗をトレースします。
関連リンク
確認
- 著者 - Arvind Yadav氏、Kanaram Bhari氏(ソフトウェア・エンジニア- PostgreSQLOCI Database with PostgreSQLを使用したOCI Database)
その他の学習リソース
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
G37662-01
Copyright ©2025, Oracle and/or its affiliates.