このドキュメントでは、Google Cloud コンソールを使用して通知チャネルを構成する方法について説明します。Cloud Monitoring は、アラート ポリシーが起動したときに、これらのチャネルを使用してお客様またはオンコール チームに通知します。アラート ポリシーを作成する場合は、構成された通知チャネルのリストから選択することで、通知するユーザーを選択します。たとえば、Compute Engine インスタンスをモニタリングして Pub/Sub トピックを公開し、Slack チャネルにオンコール チームに通知するようにアラートを構成できます。
目的の通知チャネルがサポートされていない場合は、Pub/Sub への通知の送信に依存するパイプラインを作成することを検討してください。Flask を使用する Python の例については、Cloud Monitoring と Cloud Run を使用したカスタム通知の作成をご覧ください。その他の例については、cloud-alerting-notification-forwarding Git リポジトリをご覧ください。
Cloud Monitoring API を使用して通知チャネルを構成するには、API による通知チャネルの作成と管理をご覧ください。
アラート ポリシーの通知については、次のページをご覧ください。
- 問題の発生からアラートが作成されるまでの間の遅延については、通知レイテンシをご覧ください。
- アラート ポリシーに対して生成される通知の数については、インシデントごとの通知をご覧ください。
デフォルトでは、アラート ポリシーはインシデントが作成された場合にのみ通知を送信します。インシデントが開かれたときと閉じたときに通知を受け取るには、アラート ポリシーを編集し、[通知] セクションで [Notify on incident closure] を選択します。
始める前に
Google Cloud コンソールを使用して通知チャネルを表示および構成するために必要な権限を取得するには、プロジェクトに対するMonitoring 編集者(roles/monitoring.editor
)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Cloud Monitoring のロールの詳細については、Identity and Access Management を使用してアクセスを制御するをご覧ください。
通知チャンネルを作成する
アラート ポリシーを作成するときに、構成されている通知チャネルを選択してポリシーに追加できます。通知チャネルを事前に構成することも、アラート ポリシーの作成プロセスの一環として構成することもできます。詳しくは、オンデマンドでチャネルを作成するをご覧ください。
Cloud Console を使用して通知チャネルを作成するには、次の表に示すチャネル固有の手順を行います。
メール
メール通知チャネルを追加する手順は次のとおりです。
- Google Cloud コンソールで [モニタリング] を選択します。
- [アラート]、[通知チャネルを編集] の順にクリックします。
- [メール] セクションで [新しく追加] をクリックします。
- ダイアログの項目を入力し、[保存] をクリックします。
アラート ポリシーの作成中にメール チャネルを作成できます。詳しくは、オンデマンドでチャネルを作成するをご覧ください。
アラート ポリシーの通知チャネルとしてグループのメールアドレスを使用する場合は、alerting-noreply@google.com
からのメールを受け入れるようにグループを構成します。
モバイル アプリ
Google Cloud コンソール モバイルアプリを使用すると、Google Cloud コンソール リソースと Monitoring 情報をどこからでもモニタリングできます。Google Cloud コンソール モバイルアプリ通知は、特定のデバイスまたはユーザーに送信されます。
- デバイスは、通知チャンネルを作成した特定のデバイスにのみ通知を送信することを示します。デバイス スコープの通知チャンネルの場合、[表示名] フィールドにはデバイス情報が含まれます。
- ユーザーは、Cloud Console モバイルアプリがインストールされているすべてのデバイスに通知を送信することを示します。
チャンネルが作成されると、Cloud Monitoring によって通知スコープが決定されます。スコープを選択または変更することはできません。
特定の Google Cloud プロジェクトの Cloud Console モバイルアプリ通知チャンネルを構成する手順は次のとおりです。
- モバイル デバイスのアプリストアから Google Cloud Console モバイルアプリをインストールします。
Google Cloud コンソール モバイルアプリに表示するプロジェクトを選択します。
プロジェクトを選択すると、アプリと選択した Google Cloud プロジェクトの間でデータ交換が行われます。通知チャネルが存在しない場合は自動的に作成され、数分後に [通知チャネル] ページの [モバイル デバイス] セクションに表示されます。
アラート ポリシーの通知チャンネルとしてモバイル デバイスを追加するには、アラートの [通知] セクションで [Google Cloud Console(モバイル)] を選択し、リストからモバイル デバイスを選択します。
PagerDuty
PagerDuty と統合すれば、Monitoring との一方向または双方向の同期が可能になります。構成に関係なく、以下のようになります。
- Monitoring でインシデントが作成された場合、そのインシデントは PagerDuty で開かれます。
- PagerDuty を使用して Monitoring のインシデントを閉じることはできません。
一方向の同期を使用し、PagerDuty でインシデントを解決した場合、PagerDuty のインシデントの状態は Monitoring のインシデントの状態から切り離されます。PagerDuty でインシデントを解決した場合、そのインシデントは PagerDuty で完全にクローズされ、再び開くことはできません。
双方向の同期を使用する場合、PagerDuty が表示する状態は、Monitoring により制御されます。PagerDuty でインシデントを解決し、Monitoring がインシデントを開いている場合、そのインシデントは PagerDuty で再度開かれます。
PagerDuty の通知を設定するには、次の手順を行います。
- PagerDuty で: PagerDuty サイトで PagerDuty アカウントを作成します。
- PagerDuty 通知チャネルを追加します。
- Google Cloud コンソールで [Monitoring] を選択します。
[Monitoring] に移動 - [アラート]、[通知チャネルを編集] の順にクリックします。
- [PagerDuty] セクションで、[Add new] をクリックします。
- [表示名] を入力します。この名前は、統合を追加したときに PagerDuty に指定した名前と一致する必要があります。
- PagerDuty によって生成された Integration Service Key を [Service Key] フィールドに入力します。
- [保存] をクリックします。
- Google Cloud コンソールで [Monitoring] を選択します。
- (省略可)双方向同期を構成する場合は、次の操作を行います。
- PagerDuty を開きます。
- [Configuration] を選択して [Services] を選択し、統合の構成時に入力したサービス名を選択します。
- [設定を編集] をクリックして [インシデントの作成] を選択し、[アラートとインシデントの作成] をクリアします。
アラート ポリシーを作成するときは、[通知] セクションで [PagerDuty] を選択し、PagerDuty 設定を選択します。
PagerDuty の JSON パケットの形式は次のとおりです。
{
"description": A string of various fields in the incident,
"details": JSON payload with schema version 1.2.
}
details
フィールドの例とスキーマを表示するには、次のセクションを展開します。
非推奨ポリシー
ペイロード スキーマには、Google Cloud Platform 利用規約のセクション 1.4(d)に記載されている Google Cloud 非推奨ポリシーが適用されます。なお、生成されたフィールド値の形式は、スキーマによって管理されず、予告なく変更される場合があります。たとえば、incident.summary
、incident.documentation.content
、incident.url
は、フィールドに関連するデータを含むように作られていますが、スキーマがこうしたフィールドを正確にパースすることを保証する制約はありません。値全体はまとめて使用でき、非推奨ポリシーを遵守していることを期待できますが、生成されたフィールドのパースに頼りすぎないようにしてください。SMS
SMS 通知を設定するには、次の手順を行います。
- Google Cloud コンソールで [モニタリング] を選択します。
- [アラート]、[通知チャネルを編集] の順にクリックします。
- [SMS] セクションで、[新しく追加] をクリックします。
- ダイアログの項目を入力し、[保存] をクリックします。
アラート ポリシーを設定したら、[SMS] 通知タイプを選択し、リストから確認済みの電話番号を選択します。
Slack
Monitoring と Slack を統合すると、新しいインシデントが作成されたときに、アラート ポリシーで Slack チャンネルに投稿できるようになります。 Slack 通知を設定する方法は次のとおりです。
Slackの場合: Slack サイトで Slack ワークスペースとチャネルを作成します。チャンネル URL をメモしておきます。
Google Cloud Console で [Monitoring] を選択します。
[アラート]、[Edit notification channel] の順にクリックします。
[Slack] セクションで、[新規追加] をクリックして Slack のログインページを開きます。
- Slack ワークスペースを選択します。
- [許可] をクリックして Cloud Monitoring の Slack ワークスペースへのアクセスを有効にします。この操作を行うと、通知チャンネルの Monitoring 構成ページに戻ります。
- [Slack Channel Name] フィールドに、通知に使用する Slack チャンネルの名前を入力します。
- [Cloud Alerting Display Name] フィールドに、短い説明ステートメントを入力します。Monitoring は、[Notifications channel] ページにこのフィールドの値を表示します。
- (省略可)Cloud Monitoring と Slack ワークスペースの間の接続をテストするには、[テスト通知を送信する] をクリックします。接続に成功すると、指定した Slack 通知チャネルにメッセージ
This is a test alert notification...
が表示されます。通知チャネルで通知の受信を確認してください。
通知に使用する Slack チャネルがプライベート チャネルの場合は、Monitoring アプリをそのチャネルに手動で招待する必要があります。
- Slack を開きます。
Monitoring の通知として指定したチャネルに移動します。
チャネルで次のメッセージを入力して送信することで、Monitoring アプリをチャネルに招待します。
/invite @Google Cloud Monitoring
Monitoring で通知チャネルを作成するときに指定したチャネルに、Monitoring アプリを招待するようにしてください。Monitoring アプリをパブリック チャネルに招待する方法は省略可能です。
アラート ポリシーを作成するときは、[通知] セクションの [Slack] を選択し、Slack の構成を選択します。
Webhook
Webhooks 通知を設定するには、次の手順を行います。
- webhook ハンドラ: Monitoring から webhook データを受信するパブリック エンドポイント URL を指定します。
- Google Cloud コンソールで [モニタリング] を選択します。
- [アラート]、[通知チャネルを編集] の順にクリックします。
- [Webhook] セクションで、[新しく追加] をクリックします。
- ダイアログの項目をすべて入力します。
- [接続をテストする] をクリックして、テスト ペイロードを Webhook エンドポイントに送信します。受信側エンドポイントに移動して配信を確認します。
- [保存] をクリックします。
アラート ポリシーを作成する場合は、[通知] セクションで [Webhook] を選択し、webhook 構成を選択します。 Error Reporting によって送信される通知は 1.0 スキーマに従い、Monitoring によって送信される通知は 1.2 スキーマに従います。
基本認証
Cloud Monitoring から送信された Webhook リクエストに加えて、基本的な認証では、ユーザー名とパスワードに HTTP 仕様が使用されます。Cloud Monitoring では、サーバーが適切な WWW-Authenticate
ヘッダーで 401 応答を返す必要があります。基本認証の詳細については、次を参照してください。
トークン認証
トークン認証では、エンドポイント URL のクエリ文字列パラメータと、サーバーがそれ自体と Monitoring の間で秘密であると期待するキーが必要です。トークンを含む URL の例を次に示します。
https://www.myserver.com/stackdriver-hook?auth_token=1234-abcd
Monitoring がインシデントをエンドポイント URL に送信した場合、サーバーは接続されたパラメータを検証できます。この認証方法は、SSL/TLS を使用して HTTP リクエストを暗号化し、スヌーパにトークンを知られないようにする場合に最も効果的です。
Python でのサーバー例については、このサンプル サーバーをご覧ください。
非推奨ポリシー
ペイロード スキーマには、Google Cloud Platform 利用規約のセクション 1.4(d)に記載されている Google Cloud 非推奨ポリシーが適用されます。なお、生成されたフィールド値の形式は、スキーマによって管理されず、予告なく変更される場合があります。たとえば、incident.summary
、incident.documentation.content
、incident.url
は、フィールドに関連するデータを含むように作られていますが、スキーマがこうしたフィールドを正確にパースすることを保証する制約はありません。値全体はまとめて使用でき、非推奨ポリシーを遵守していることを期待できますが、生成されたフィールドのパースに頼りすぎないようにしてください。
Pub/Sub
このセクションでは、Pub/Sub 通知チャネルの構成方法について説明します。冗長性を確保するために、複数の通知チャネルを作成することをおすすめします。Pub/Sub は別の配信メカニズムを使用するため、Google Cloud コンソールのモバイルアプリ、PagerDuty、Webhooks、Slack とペアリングすることをおすすめします。
Pub/Sub 通知チャネルを構成するには:
データスキーマを理解するには、スキーマの例をご覧ください。
アラート通知を受信するには、Pub/Sub サブスクリプションを作成する必要もあります。サブスクリプションがトピックとは異なるプロジェクトにある場合は、サブスクライバー プロジェクトでサービス アカウントを作成し、roles/pubsub.subscriber
のロールを付与します。
始める前に
Google Cloud プロジェクトの最初の通知チャネルを追加すると、Cloud Monitoring によってそのプロジェクトのサービス アカウントが作成されます。また、サービス アカウントに Identity and Access Management ロールの Monitoring Notification Service Agent が付与されます。 このサービス アカウントを使用すると、Monitoring がこのプロジェクトの Pub/Sub ベースの通知チャンネルに通知を送信できます。
サービス アカウントの形式は次のとおりです。
service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
通知サービス アカウントの名前には、一意の Google Cloud プロジェクト番号が含まれます。プロジェクトの名前、ID、番号は、Google Cloud コンソールのプロジェクトのダッシュボードで確認できます。また、次のコマンドでも取得できます。
gcloud projects describe PROJECT_ID --format="value(project_number)"
サービス アカウントを表示して編集するには、Google Cloud コンソールまたは Google Cloud CLI を使用します。
Pub/Sub API を有効にしてトピックを作成する
Google Cloud プロジェクトの Pub/Sub API を有効にします。
Pub/Sub API を有効にする- Pub/Sub トピックを作成する予定の Google Cloud プロジェクトを選択します。
- 表示されたら [有効にする] をクリックします。[API が有効です] と表示されている場合、操作は必要ありません。
Pub/Sub トピックを作成します。トピックの作成方法については、トピックの作成をご覧ください。 たとえば、Google Cloud CLI を使用して
notificationTopic
というトピックを作成するには、次のコマンドを実行します。gcloud pubsub topics create notificationTopic
次に、Pub/Sub 通知チャネルを構成します。
トピックの通知を構成する
Pub/Sub 通知チャネルを作成するには、Monitoring API、Google Cloud CLI または Google Cloud コンソールを使用します。通知チャネルを作成したら、通知サービス アカウントに、通知チャネルとして使用する各トピックの公開を許可します。
Monitoring API または Google Cloud CLI を使用した通知チャネルの作成については、チャネルの作成をご覧ください。
Google Cloud Console を使用して通知チャネルを作成する手順は次のとおりです。
- Google Cloud コンソールで [モニタリング] を選択します。
- 作成した Pub/Sub トピックを含む Google Cloud プロジェクトを選択します。
- [アラート]、[通知チャネルを編集] の順にクリックします。
[Pub/Sub] セクションで、[新しく追加] をクリックします。
[作成した Pub/Sub Channel] ダイアログに、Monitoring によって作成されたサービス アカウントの名前が表示されます。
サービス アカウントを承認します。サービス アカウントは、すべてのトピックまたは特定のトピックを公開できます。
すべてのトピックを公開するには、[ロールを管理] を選択して、[Pub/Sub パブリッシャー] のロールを追加します。
通知チャネルを構成する手順が完了したら、次のサービス アカウントを承認するというセクションをスキップし、アラート ポリシーで通知チャネルを設定するに進みます。
- 特定のトピックを公開するには、通知チャネルの構成が完了した後、次のステップに進んで、特定のトピックを公開するサービス アカウントに承認します。サービス アカウントを承認する手順については、サービス アカウントを承認するをご覧ください。
- チャネルの表示名と Pub/Sub トピック名を入力します。
- (省略可)チャネルが正しく構成されていることを確認するには、[テスト通知を送信] をクリックします。
- [チャンネルを追加] を選択します。
次に、サービス アカウントを承認します。
サービス アカウントを承認します
承認を使用すると、通知チャネルとして使用する各 Pub/Sub トピックを公開するように通知サービス アカウントを設定できます。このセクションでは、次の操作を行う方法について説明します。
- 特定のトピックのサービス アカウントを承認します。
- すべてのトピックのサービス アカウントを承認します。
特定のトピックのサービス アカウントを承認する
Google Cloud コンソールと Google Cloud CLI を使用すると、サービス アカウントに特定のトピックの公開を許可できます。このセクションでは、両方のアプローチについて説明します。
Google Cloud Console を使用して特定のトピックのサービス アカウントを認証する手順は次のとおりです。
- Pub/Sub の [トピック] ページに移動します。
[トピック] に移動 - トピックを選択します。
- [権限] タブで、[プリンシパルを追加] を選択します。
- [New principal] フィールドに、通知サービス アカウントの名前を入力します。サービス アカウントの命名規則は次のとおりです。
service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
- [Pub/Sub パブリッシャー] ロールを選択し、[保存] を選択します。
Google Cloud CLI を使用して、特定のトピックのサービス アカウントを承認するには、トピックの pubsub.publisher
IAM ロールをサービス アカウントに付与します。たとえば、次のコマンドは、notificationTopic
トピックの IAM ロールを構成します。
gcloud pubsub topics add-iam-policy-binding \ projects/PROJECT_NUMBER/topics/notificationTopic --role=roles/pubsub.publisher \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
add-iam-policy-binding
コマンドが正常に実行されると、レスポンスは次のようになります。
Updated IAM policy for topic [notificationTopic]. bindings: ‐ members: ‐ serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com role: roles/pubsub.publisher etag: BwWcDOIw1Pc= version: 1
詳細については、pubsub topics add-iam-policy-binding
リファレンス ページをご覧ください。
すべてのトピックのサービス アカウントを承認する
すべてのトピックのサービス アカウントを承認する方法は次のとおりです。
- [IAM] ページに移動します。
[IAM] に移動 - 次のスクリーンショットに示すように、[Google 提供のロール付与を含む] を選択します。
- 次の形式のサービス アカウントを検索します。
service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
サービス アカウントが表示されていない場合は、ページを再読み込みします。
- 通知サービス アカウントの edit[編集] を選択し、[別のロールを追加] を選択してから、[Pub/Sub パブリッシャー] ロールを追加します。
次に、アラート ポリシーで通知チャネルを設定します。
アラート ポリシーで通知チャネルを設定する
アラート ポリシーで Pub/Sub 通知チャネルを使用するには、チャネルタイプとして [Pub/Sub] を選択し、トピックを選択します。
スキーマの例
JSON パケットとスキーマの例を表示するには、以下のセクションを展開してください。
非推奨ポリシー
ペイロード スキーマには、Google Cloud Platform 利用規約のセクション 1.4(d)に記載されている Google Cloud 非推奨ポリシーが適用されます。なお、生成されたフィールド値の形式は、スキーマによって管理されず、予告なく変更される場合があります。たとえば、incident.summary
、incident.documentation.content
、incident.url
は、フィールドに関連するデータを含むように作られていますが、スキーマがこうしたフィールドを正確にパースすることを保証する制約はありません。値全体はまとめて使用でき、非推奨ポリシーを遵守していることを期待できますが、生成されたフィールドのパースに頼りすぎないようにしてください。
オンデマンドでチャネルを作成する
アラート ポリシーに通知チャネルを追加する際は、リストからチャネルを選択する必要があります。アラート ポリシーの作成中にオプションのリストを更新するには、次のプロセスを使用します。
- 通知ダイアログで、[通知チャネルを管理] をクリックします。新しいブラウザタブの [通知チャネル] ウィンドウに移動します。
- 新しい通知チャネルを追加するには、チャネルの種類を見つけて [新しく追加] をクリックし、以前の表に含まれるチャネル固有の手順を行います。
元のタブに戻り、通知ダイアログで [refresh更新] をクリックします。
更新されたリストから [通知チャネル] を選択します。
通知チャンネルをテストする
Cloud Monitoring は、通知チャネルのテスト オプションをサポートしていません。 ただし、アラート ポリシーを作成し、トリガーする条件を構成することで、通知チャネルが適切に構成されていることを確認できます。
たとえば、次の手順で通知チャネルの構成を確認できます。
- Google Cloud プロジェクトに Compute Engine インスタンスがない場合は作成します。
そのインスタンスの CPU 使用率をモニタリングするアラート ポリシーを作成します。
Google Cloud プロジェクトに複数のインスタンスが含まれている場合は、1 つのインスタンスを選択するフィルタを追加します。
[条件トリガー] フィールドを次のように構成します。
- [Condition type] フィールドで [Threshold] を選択します。
- [しきい値の位置] フィールドで [しきい値を下回る] を選択します。
- インスタンスの CPU 使用率よりも大きい値を選択します。たとえば、グラフに CPU 使用率が約 5% と表示された場合は、しきい値を 10% に設定します。
- [詳細オプション] を展開し、[再テストの時間枠] フィールドで [再テストなし] を選択します。
これらの設定は、Compute Engine インスタンスの CPU 使用率が指定されたしきい値を下回るとトリガーされるポリシーを構成します。インスタンスの CPU 使用率よりも大きいしきい値を選択したため、条件がトリガーされます。
ポリシーに通知チャンネルを追加します。
[インシデントの自動クローズ期間] を展開し、[30 分] を選択します。
ポリシー名を入力し、[Create policy] をクリックします。
トリガーする条件の後に、各通知チャネルで通知を受け取ったことを確認します。
作成したアラート ポリシーと Compute Engine インスタンスを削除します。自動クローズ期間が終了すると、インシデントは自動的にクローズされます。
このテスト用に VM を作成した場合は、それを削除します。
通知チャンネルを編集、削除する
Cloud Console を使用して通知チャネルを編集または削除するには、次の操作を行います。
Google Cloud Console で [Monitoring] を選択するか、次のボタンをクリックします。
Monitoring のナビゲーション パネルで、notifications [アラート] をクリックします。
[Edit notification channels] をクリックします。
[通知チャネル] ダッシュボードには、通知チャネルの種類ごとにセクションがあります。各セクションには、その種類のすべての構成が一覧表示されます。
- エントリを変更するには、[edit編集] をクリックします。変更が完了したら、[保存] をクリックします。
- エントリを削除するには、[delete削除] をクリックします。確認ダイアログで、[削除] をクリックします。
通知チャンネル ログを表示する
ログ エクスプローラを使用して、通知チャネルのエラーを表示できます。
Google Cloud コンソールを使用してエラーの表示を開始するには、ログ エクスプローラに移動します。
クエリを入力して実行します。通知チャネルエラーに固有のクエリについては、Cloud Monitoring のクエリクエリをご覧ください。