通知チャネルの管理

このドキュメントでは、Cloud Monitoring アラート ポリシーで使用可能な、サポートされている通知チャネルの種類を紹介し、Google Cloud Console を使用して通知チャネルを構成する方法について説明します。通知チャネルは、アラート ポリシーの条件が満たされたことを Monitoring が通知するために使用するメカニズムです。たとえば、サポートチームにメールを送信し、Pub/Sub トピックを公開するように Monitoring を構成できます。

Cloud Monitoring API を使用して通知チャネルを構成するには、通知チャネルの管理をご覧ください。

アラート ポリシーの通知については、次のページをご覧ください。

  • 問題の発生からアラートが作成されるまでの間の遅延については、通知レイテンシをご覧ください。
  • アラート ポリシーに対して生成される通知の数については、インシデントごとの通知をご覧ください。

デフォルトでは、アラート ポリシーはインシデントが作成された場合にのみ通知を送信します。インシデントが開かれたときと閉じたときに通知を受け取るには、アラート ポリシーを編集し、[通知] セクションで [Notify on incident closure] を選択します。

チャネルの作成

通知チャンネルを構成するには、指標スコープのスコープ対象プロジェクトに対して次のいずれかの Identity and Access Management ロールを持っている必要があります。

  • モニタリング通知チャネルの編集者
  • モニタリング編集者
  • モニタリング管理者
  • プロジェクト編集者
  • プロジェクト オーナー

これらのロールの詳細については、アクセス制御をご覧ください。

アラート ポリシーを作成するときに、構成されている通知チャネルを選択してポリシーに追加できます。通知チャネルを事前に構成することも、アラート ポリシーの作成プロセスの一環として構成することもできます。詳しくは、オンデマンドでチャネルを作成するをご覧ください。

Cloud Console を使用して通知チャネルを作成するには、次の表に示すチャネル固有の手順を行います。

Email

メール通知チャネルを追加する手順は次のとおりです。

  1. Cloud Console で、[モニタリング] を選択します。

    [モニタリング] に移動

  2. [アラート]、[通知チャネルを編集] の順にクリックします。
  3. [メール] セクションで [新しく追加] をクリックします。
  4. ダイアログの項目を入力し、[保存] をクリックします。

アラート ポリシーの作成中にメール チャネルを作成できます。詳しくは、オンデマンドでチャネルを作成するをご覧ください。

アラート ポリシーの通知チャネルとしてグループのメールアドレスを使用する場合は、alerting-noreply@google.com からのメールを受け入れるようにグループを構成します。

モバイル アプリ

Cloud Console モバイルアプリで、どこからでも Cloud Console リソースと Monitoring の情報をモニタリングできます。 Cloud Console モバイルアプリ通知は、特定のデバイスまたは特定のユーザーに送信されます。

Cloud Console モバイルアプリ通知チャンネルのリスト。

  • デバイスは、通知チャンネルを作成した特定のデバイスにのみ通知を送信することを示します。デバイス スコープの通知チャンネルの場合、[表示名] フィールドにはデバイス情報が含まれます。
  • ユーザーは、Cloud Console モバイルアプリがインストールされているすべてのデバイスに通知を送信することを示します。

チャンネルが作成されると、Cloud Monitoring によって通知スコープが決定されます。スコープを選択または変更することはできません。

特定の Google Cloud プロジェクトの Cloud Console モバイルアプリ通知チャンネルを構成する手順は次のとおりです。

  1. モバイル デバイスのアプリストアから Cloud Console モバイルアプリをインストールします。
  2. Cloud Console モバイルアプリに表示するプロジェクトを選択します。

    プロジェクトを選択すると、アプリと選択した Google Cloud プロジェクトの間でデータ交換が行われます。通知チャネルが存在しない場合は自動的に作成され、数分後に [通知チャネル] ページの [モバイル デバイス] セクションに表示されます。

アラート ポリシーの通知チャンネルとしてモバイル デバイスを追加するには、アラートの [通知] セクションで [Google Cloud Console(モバイル)] を選択し、リストからモバイル デバイスを選択します。

PagerDuty

PagerDuty と統合すれば、Monitoring との一方向または双方向の同期が可能になります。構成に関係なく、以下のようになります。

  • Monitoring でインシデントが作成された場合、そのインシデントは PagerDuty で開かれます。
  • PagerDuty を使用して Monitoring のインシデントを閉じることはできません。

一方向の同期を使用し、PagerDuty でインシデントを解決した場合、PagerDuty のインシデントの状態は Monitoring のインシデントの状態から切り離されます。PagerDuty でインシデントを解決した場合、そのインシデントは PagerDuty で完全にクローズされ、再び開くことはできません。

双方向の同期を使用する場合、PagerDuty が表示する状態は、Monitoring により制御されます。PagerDuty でインシデントを解決し、Monitoring がインシデントを開いている場合、そのインシデントは PagerDuty で再度開かれます。

PagerDuty の通知を設定するには、次の手順を行います。

  1. PagerDuty で: PagerDuty サイトで PagerDuty アカウントを作成します。
  2. PagerDuty の Stackdriver 統合ガイドに記載されている手順に従って、PagerDuty と Monitoring の統合を完了します。
  3. PagerDuty 通知チャネルを追加します。
    1. Cloud Console で、[モニタリング] を選択します。
      [モニタリング] に移動
    2. [アラート]、[通知チャネルを編集] の順にクリックします。
    3. [PagerDuty] セクションで、[Add new] をクリックします。
    4. [表示名] を入力します。この名前は、統合を追加したときに PagerDuty に指定した名前と一致する必要があります。
    5. PagerDuty によって生成された Integration Service Key を [Service Key] フィールドに入力します。
    6. [保存] をクリックします。
  4. (省略可)双方向同期を構成する場合は、次の操作を行います。
    1. PagerDuty を開きます。
    2. [Configuration] を選択して [Services] を選択し、統合の構成時に入力したサービス名を選択します。
    3. [設定を編集] をクリックして [インシデントの作成] を選択し、[アラートとインシデントの作成] をクリアします。

アラート ポリシーを作成するときは、[通知] セクションで [PagerDuty] を選択し、PagerDuty 設定を選択します。

このドキュメントのスクリーンショットは、プロダクト名が「Stackdriver」と表示されており、最新ではありませんが、このドキュメントに記載されている手順は正確です。

SMS

SMS 通知を設定するには、次の手順を行います。

  1. Cloud Console で、[モニタリング] を選択します。

    [モニタリング] に移動

  2. [アラート]、[通知チャネルを編集] の順にクリックします。
  3. [SMS] セクションで、[新しく追加] をクリックします。
  4. ダイアログの項目を入力し、[保存] をクリックします。

アラート ポリシーを設定したら、[SMS] 通知タイプを選択し、リストから確認済みの電話番号を選択します。

Slack

Monitoring と Slack を統合すると、新しいインシデントが作成されたときに、アラート ポリシーで Slack チャンネルに投稿できるようになります。Slack 通知を設定する方法は次のとおりです。

  1. Slackの場合: Slack サイトで Slack ワークスペースとチャネルを作成します。チャネル URL をメモしておきます。

  2. Cloud Console で、[モニタリング] を選択します。

    [Monitoring] に移動

  3. [アラート]、[Edit notification channel] の順にクリックします。

  4. [Slack] セクションで、[新規追加] をクリックして Slack のログインページを開きます。

    1. Slack ワークスペースを選択します。
    2. [許可] をクリックして Cloud Monitoring の Slack ワークスペースへのアクセスを有効にします。この操作を行うと、通知チャンネルの Monitoring 構成ページに戻ります。
    3. 通知に使用する Slack チャンネルの名前を入力します。
    4. Slack 通知チャンネルの表示名を入力します。
    5. (省略可)Cloud Monitoring と Slack ワークスペースの間の接続をテストするには、[テスト通知を送信する] をクリックします。接続に成功すると、指定した Slack 通知チャネルにメッセージ This is a test alert notification... が表示されます。通知チャネルで通知の受信を確認してください。
  5. 通知に使用する Slack チャネルがプライベート チャネルの場合は、Monitoring アプリをそのチャネルに手動で招待する必要があります。

    1. Slack を開きます。
    2. Monitoring の通知として指定したチャネルに移動します。

    3. チャネルで次のメッセージを入力して送信することで、Monitoring アプリをチャネルに招待します。

      /invite @Google Cloud Monitoring

      Monitoring で通知チャネルを作成するときに指定したチャネルに、Monitoring アプリを招待するようにしてください。Monitoring アプリをパブリック チャネルに招待する方法は省略可能です。

    アラート ポリシーを作成するときは、[通知] セクションの [Slack] を選択し、Slack の構成を選択します。

Webhook

Webhooks 通知を設定するには、次の手順を行います。

  1. webhook ハンドラ: Monitoring から webhook データを受信するパブリック エンドポイント URL を指定します。
  2. Cloud Console で、[モニタリング] を選択します。

    [モニタリング] に移動

  3. [アラート]、[通知チャネルを編集] の順にクリックします。
  4. [PagerDuty] セクションで、[新しく追加] をクリックします。
  5. ダイアログの項目をすべて入力します。
  6. [接続をテストする] をクリックして、テスト ペイロードを Webhook エンドポイントに送信します。受信側エンドポイントに移動して配信を確認します。
  7. [保存] をクリックします。

アラート ポリシーを作成する場合は、[通知] セクションで [Webhook] を選択し、webhook 構成を選択します。

基本認証

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.summaryincident.documentation.contentincident.url は、フィールドに関連するデータを含むように作られていますが、スキーマがこうしたフィールドを正確にパースすることを保証する制約はありません。値全体はまとめて使用でき、非推奨ポリシーを遵守していることを期待できますが、生成されたフィールドのパースに頼りすぎないようにしてください。

Pub/Sub

このセクションでは、Pub/Sub 通知チャネルの構成方法について説明します。冗長性を確保するために、複数の通知チャネルを作成することをおすすめします。Pub/Sub は別の配信メカニズムを使用するため、Cloud Console モバイルアプリ、PagerDuty、Webhooks、Slack とペアリングすることをおすすめします。

Pub/Sub 通知チャネルを構成するには:

  1. Pub/Sub API を有効にしてトピックを作成する
  2. トピックの通知チャネルを構成する
  3. サービス アカウントを承認する
  4. アラート ポリシーで通知チャネルを設定する

始める前に

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

通知サービス アカウントの名前には、一意の Cloud プロジェクト番号が含まれます。プロジェクトの名前、ID、番号は、Cloud Console のプロジェクトのダッシュボードで確認できます。また、次のコマンドでも取得できます。

gcloud projects describe PROJECT_ID --format="value(project_number)"

サービス アカウントを表示して編集するには、Google Cloud Console または gcloud コマンドライン ツールを使用します。

Pub/Sub API を有効にしてトピックを作成する

  1. Cloud プロジェクトで Pub/Sub API を有効にします:
    Pub/Sub API を有効にする

  2. Pub/Sub トピックを作成します。トピックの作成方法については、トピックの作成をご覧ください。 たとえば、gcloud コマンドライン ツールを使用して notificationTopic というトピックを作成するには、次のコマンドを実行します。

    gcloud pubsub topics create notificationTopic

次に、Pub/Sub 通知チャネルを構成します。

トピックの通知を構成する

Pub/Sub 通知チャネルを作成するには、Monitoring API、gcloud コマンドライン ツール、または Cloud Console を使用します。通知チャネルを作成したら、通知サービス アカウントに、通知チャネルとして使用する各トピックの公開を許可します。

Monitoring API または gcloud コマンドライン ツールを使用して通知チャネルを作成する方法については、チャネルの作成をご覧ください。

Cloud Console を使用して通知チャネルを作成する手順は次のとおりです。

  1. Cloud Console で、[モニタリング] を選択します。

    [モニタリング] に移動

  2. [アラート]、[通知チャネルを編集] の順にクリックします。
  3. [Pub/Sub] セクションで、[新しく追加] をクリックします。

    [作成した Pub/Sub Channel] ダイアログに、Monitoring によって作成されたサービス アカウントの名前が表示されます。

  4. サービス アカウントを承認します。サービス アカウントは、すべてのトピックまたは特定のトピックを公開できます。

    • すべてのトピックを公開するには、[ロールを管理] を選択し、[Pub/Sub パブリッシャー] のロールを追加します。

      通知チャネルを構成する手順が完了したら、次のサービス アカウントを承認するというセクションをスキップし、アラート ポリシーで通知チャネルを設定するに進みます。

    • 特定のトピックを公開するには、通知チャネルの構成が完了した後、次のステップに進んで、特定のトピックを公開するサービス アカウントに承認します。サービス アカウントを承認する手順については、サービス アカウントを承認するをご覧ください。
  5. チャネルの表示名と Pub/Sub トピック名を入力します。
  6. (省略可)チャネルが正しく構成されていることを確認するには、[テスト通知を送信] をクリックします。
  7. [チャンネルを追加] を選択します。

次に、サービス アカウントを承認します。

サービス アカウントを承認します

承認を使用すると、通知サービス アカウントに、通知チャネルとして使用する各 Pub/Sub トピックを公開できます。このセクションでは、次の方法について説明します。

  • 特定のトピックのサービス アカウントを承認します。
  • すべてのトピックのサービス アカウントを承認します。

特定のトピックのサービス アカウントを承認する

特定のトピックを公開するサービス アカウントを承認するには、Google Cloud Console と gcloud コマンドライン ツールを使用します。このセクションでは、両方のアプローチについて説明します。

Google Cloud Console を使用して特定のトピックのサービス アカウントを認証する手順は次のとおりです。

  1. Pub/Sub の [トピック] ページに移動します。
    [トピック] に移動
  2. トピックを選択します。
  3. [権限] タブで、[プリンシパルを追加] を選択します。
  4. [新しいプリンシパル] フィールドに、通知サービス アカウントの名前を入力します。サービス アカウントの命名規則は次のとおりです。
    service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
  5. [Pub/Sub パブリッシャー] ロールを選択し、[保存] を選択します。

特定のトピックのサービス アカウントを承認するには、gcloud コマンドライン ツールを使用して、トピックの 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 リファレンス ページをご覧ください。

すべてのトピックのサービス アカウントを承認する

すべてのトピックのサービス アカウントを承認する方法は次のとおりです。

  1. [IAM] ページに移動します。
    [IAM] に移動
  2. 次のスクリーンショットに示すように、[Google 提供のロール付与を含む] を選択します。
    [Google 提供のロール付与を含む] オプションを選択します。
  3. 次の形式のサービス アカウントを検索します。
    service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com

    サービス アカウントが表示されていない場合は、ページを再読み込みします。

  4. 通知サービス アカウントの [編集] を選択し、[別のロールを追加] を選択してから、[Pub/Sub パブリッシャー] ロールを追加します。

次に、アラート ポリシーで通知チャネルを設定します。

アラート ポリシーで通知チャネルを設定する

アラート ポリシーで Pub/Sub 通知チャネルを使用するには、チャネルタイプとして [Pub/Sub] を選択し、トピックを選択します。

スキーマの例

JSON パケットとスキーマの例を表示するには、以下のセクションを展開してください。

非推奨ポリシー

ペイロード スキーマには、Google Cloud Platform 利用規約のセクション 1.4(d)に記載されている Google Cloud 非推奨ポリシーが適用されます。なお、生成されたフィールド値の形式は、スキーマによって管理されず、予告なく変更される場合があります。たとえば、incident.summaryincident.documentation.contentincident.url は、フィールドに関連するデータを含むように作られていますが、スキーマがこうしたフィールドを正確にパースすることを保証する制約はありません。値全体はまとめて使用でき、非推奨ポリシーを遵守していることを期待できますが、生成されたフィールドのパースに頼りすぎないようにしてください。

オンデマンドでのチャネルの作成

アラート ポリシーに通知チャネルを追加する際は、リストからチャネルを選択する必要があります。使用する通知チャネルがリストにない場合は、次の手順で構成済みの通知チャネルを更新できます。

  1. 通知ダイアログで、[通知チャネルを管理] をクリックします。新しいブラウザタブの [通知チャネル] ウィンドウに移動します。
  2. 新しい通知チャネルを追加するには、チャネルの種類を見つけて [新しく追加] をクリックし、以前の表に含まれるチャネル固有の手順を行います。
  3. 元のタブに戻り、通知ダイアログで [更新] をクリックします。

    「更新」ボタンと「チャネルを管理する」ボタンを表示する通知ダイアログ。

  4. 更新されたリストから [通知チャネル] を選択します。

チャネルの編集と削除

Cloud Console を使用して通知チャネルを編集または削除するには、次の操作を行います。

  1. Cloud Console で [モニタリング] を選択するか、次のボタンをクリックします。

    [Monitoring] に移動

  2. Monitoring のナビゲーション パネルで、 [アラート] をクリックします。

  3. [Edit notification channels] をクリックします。

    [通知チャネル] ダッシュボードには、通知チャネルの種類ごとにセクションがあります。各セクションには、その種類のすべての構成が一覧表示されます。

    • エントリを変更するには、[編集] をクリックします。変更が完了したら、[保存] をクリックします。
    • エントリを削除するには、[削除] をクリックします。確認ダイアログで、[削除] をクリックします。