Cloud Manager は、プログラムによる処理のためにHTTP POST リクエストとして Webhook エンドポイントにアラート通知を送信するように構成できます。 Webhook を使用すると、 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 Alert エンドポイントのドキュメント を参照してください。
例 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フィールドには、Cloud Manager がリクエスト検証用の X-MMS-Signature ヘッダーを生成するためにのみ使用するシークレットが保存されます。 Cloud Manager は、認証ヘッダーまたはベアラー トークンとしてシークレットを直接送信しません。
ウェブフックエンドポイントで認証が必要な場合は、次のいずれかの方法を使用して独自に取り扱う必要があります。
クエリパラメータ: 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 シークレットを使用して、リクエスト本文の base64 でエンコードされた HMAC -SHA-1 署名を計算します。
制限
ウェブフック統合を使用する場合は、次の制約事項を考慮してください。
アラートの重要度は含まれません
Webhook ペイロードには、 Cloud Managerで設定したアラート重大度レベルは含まれていません。構成された重大度を取得するには、Webhook alertConfigIdペイロードから を使用して、1 つのアラート構成を取得する エンドポイントを追加で呼び出します。
手動テストアラートなし
Cloud Manager には、テスト アラートを手動でトリガーする方法は提供されていません。 Webhook エンドポイントをテストするには、次のような簡単にトリガーできる条件でアラートを一時的に設定します。
テスト環境の低ディスク容量しきい値。
複数の接続を開くことで trigger できる接続数のスレッショル。
テストレプリカセットにおけるレプリケーションラグのしきい値。
ウェブフックがアラートを正しく受信していることを確認した後、テスト アラート構成を削除できます。
ファイアウォール構成
ファイアウォールでIP アクセス リストを構成する必要がある場合は、 Cloud Manager IPアドレスからのアクセスを許可して、 Cloud Manager がWebhook エンドポイントと通信できるようにします。
Webhook配信の問題のトラブルシューティング
ウェブフックがアラートを受信しない場合: