Cloud Manager を設定して、アラート通知をプログラムでプロセシングするための HTTP 書き込み リクエストとしてウェブフック エンドポイントとなる接続されたデバイスに送信するようにできます。Webhooks により、Cloud Manager アラートをカスタムモニタリングシステム、インシデントマネジメントプラットフォーム、またはオートメーションワークフローと統合できます。
必要なアクセス権
Cloud Manager を Webhook と統合するには、プロジェクトに対する Project Monitoring Admin アクセス権が必要です。
Webhook 統合の構成
MongoDB Cloud Managerで、Project Settings ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、Project Settings をクリックします。
[ Project Settings ]ページが表示されます。
アラートをウェブフックに送信するには、アラート通知を構成します。詳しくは、「アラート設定の構成」を参照してください。
リクエストヘッダー
Cloud Manager は、各 Webhook リクエストに以下の HTTP ヘッダーを含めます。
Cloud Manager は、さまざまなアラート状態を区別するためにX-MMS-Eventというリクエスト ヘッダーを追加します。 このヘッダーに指定できる値は次のとおりです。
| アラートは先ほど開かれています。 |
| アラートは解決されました。 |
| 以前に開かれたアラートはまだ開いています。 |
| アラートは確認されました。 |
| アラートは無効になり、キャンセルされました。 |
| 「プライマリ選択」など、特定の時点のイベントである情報アラートを表します。 |
Webhook Secret フィールドでキーを指定する場合、MongoDB Cloud Manager は X-MMS-Signature リクエストヘッダーを追加します。このヘッダーには、リクエスト本文の Base64 エンコードされた HMAC-SHA-1 署名が含まれています。MongoDB Cloud Manager は提供されたシークレットを用いて署名を生成します。
リクエスト本文
リクエスト ボディには、Cloud Manager API アラート リソース と同じ形式を使用する JSON ドキュメントが含まれています。ペイロードには、次のようなキーフィールドが含まれています。
id: アラートの一意の識別子です。eventTypeName: アラートをトリガーするイベントの種類。created: アラートが作成されたタイムスタンプ。status: アラートの現在のステータス(例:OPEN、CLOSED)。humanReadable: アラートの人間が判読可能な説明。
フィールドの完全なリストについては、Get One アラート エンドポイントとなる接続されたデバイスのドキュメントを参照してください。
例 Webhook ペイロード
次の例は、メトリクスしきい値アラートのサンプルWebhookペイロードを示しています。
{ "id": "5d1b6f8e8c2e4e2d3c4a5b6c", "groupId": "5d1b6f8e8c2e4e2d3c4a5b6d", "eventTypeName": "OUTSIDE_METRIC_THRESHOLD", "status": "OPEN", "created": "2024-01-15T10:30:00Z", "updated": "2024-01-15T10:30:00Z", "lastNotified": "2024-01-15T10:30:00Z", "humanReadable": "Disk space used on data partition is 95.2%.", "metricName": "DISK_PARTITION_SPACE_USED_DATA", "currentValue": { "number": 95.2, "units": "RAW" }}Webhookテンプレートのカスタマイズ
ウェブフック通知の webhookHeadersTemplate および webhookBodyTemplate フィールドを設定することで、ウェブフック リクエスト ヘッダーとボディコンテンツをカスタマイズできます。各テンプレートは ${field} 補間をサポートしています。Cloud Manager は、通知を送信するときに、各 ${field} プレースホルダーをアラート ドキュメントの一致するフィールドの値で置き換えます。
アラート ドキュメントが返すフィールド(${eventTypeName}、${clusterName}、${status}、${created} など)はすべて補間できます。補間できるフィールドの完全なリストについては、アラートの取得エンドポイントとなる接続されたデバイスの応答フィールドを参照してください。
例えば、ボディ テンプレート {"event": "${eventTypeName}", "cluster": "${clusterName}"} は、Cloud Manager がリクエストを送信する前に、各プレースホルダーをアラート値でレンダーします。
レンダリングされたボディは有効な JSON である必要があり、Content-Type: application/json ヘッダーとともに送信されます。レンダリングされたヘッダーは、各ヘッダー名をその値にマップする JSON オブジェクトである必要があります。Cloud Manager は、webhook シークレットまたは署名ヘッダーをテンプレートに公開しません。また、API 応答では、テンプレート フィールドの両方を隠します。
テンプレートのレンダーに失敗した場合、サイズ制限を超えた場合、または無効な出力が生成された場合、Cloud Managerは代わりにデフォルトのペイロードとヘッダーを送信し、通知を配信します。
アラートを保存する前にレンダーされた出力をプレビューするには、サンプル アラート データに対してテンプレートをレンダーする Post test message to webhook ボタンをクリックします。
Webhook リクエストの認証
Webhook Secret フィールドには、リクエストの検証のために X-MMS-Signature ヘッダーを生成する目的でのみ Cloud Manager が使用するシークレットが保存されます。Cloud Manager は、シークレットを認証ヘッダーや Bearer token として直接送信することはありません。
ウェブフックエンドポイントで認証が必要な場合は、次のいずれかの方法を使用して独自に取り扱う必要があります。
クエリパラメータ: Webhook URLにクエリパラメータとして認証情報を含めます。例:
https://example.com/webhook?token=your-auth-tokenIP アクセス リスト: Cloud Manager の IP アドレスからのリクエストのみを受け入れるように webhook エンドポイントとなる接続されたデバイスを構成します。この構成により、Cloud Manager のみがエンドポイントとなる接続されたデバイスにリクエストを送信できるようになります。
リバースプロキシまたはAPIゲートウェイ: リクエストを webhook エンドポイントとなる接続されたデバイスに転送する前に、認証を取り扱うリバースプロキシまたはAPIゲートウェイを使用します。
Webhook リクエストの確認
Webhook リクエストが Cloud Manager から発信されたことを確認するには、X-MMS-Signature ヘッダーを検証します。
制限
ウェブフック統合を使用する場合は、次の制約事項を考慮してください。
アラートの重要度は含まれません
Webhookペイロードには、Cloud Managerで構成したアラートの重大度レベルは含まれていません。構成された重大度を検索するには、WebhookペイロードのalertConfigIdを使用して、Get One アラート Configurationエンドポイントとなる接続されたデバイスを呼び出します。
手動テストアラートなし
Cloud Managerには、テストアラートを手動でtriggerする方法はありません。Webhookエンドポイントとなる接続されたデバイスをテストするには、次のように、triggerしやすい条件でアラートを一時的に設定できます。
テスト配置におけるディスク容量不足のしきい値。
複数の接続を開くことで trigger できる接続数のスレッショル。
テストレプリカセットにおけるレプリケーションラグのしきい値。
ウェブフックがアラートを正しく受信していることを確認した後、テスト アラート構成を削除できます。
ファイアウォール構成
ファイアウォールで IP アクセス リストの構成が必要な場合は、Cloud Manager が webhook エンドポイントとなる接続されたデバイスと通信できるように、Cloud Manager の IP アドレスからのアクセスを許可してください。
Webhook配信の問題のトラブルシューティング
ウェブフックがアラートを受信しない場合: