通知チャネルの管理

このページでは、サポートされている通知チャネルの種類を紹介し、Google Cloud Console を使用して通知チャネルを構成する方法について説明します。Cloud Monitoring API を使用して通知チャネルを構成するには、通知チャネルの管理をご覧ください。

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

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

チャネルの作成

通知チャネルを構成するには、ワークスペースのホスト プロジェクトで次のいずれかの Identity and Access Management のロールが割り当てられている必要があります。

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

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

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

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

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

    [Monitoring] に移動

  2. Monitoring のナビゲーション パネルで、正しいワークスペースが選択されていることを確認します。

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

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

  5. 新しい通知チャネルを追加するには、チャネルの種類を見つけて [新しく追加] をクリックし、次の表に示すチャネル固有の手順に従います。

メール

メールを追加するには、[メール] セクションの [新しく追加] をクリックしてから表示される手順に従います。

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

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

アラート ポリシーは、インシデントの作成時と解決時にメール通知を送信します。この動作はカスタマイズできません。ただし、メールルールを設定してメール通知をフィルタすることは可能です。

モバイル アプリ

Cloud Console モバイルアプリで、どこからでも Cloud Console リソースと Monitoring の情報をモニタリングできます。

モニタリング通知を受信するようにモバイル デバイスを設定するには、次の手順を行います。

  1. モバイル端末のアプリストアから Cloud Console モバイルアプリをインストールします。
  2. Cloud Console モバイルアプリ内: [設定] メニューを選択してワークスペースのアプリを構成します。Cloud Console のリソースが表示されます。
  3. [Mobiel Devices] セクションの [新しく追加] をクリックして表示される手順を行います。

数分後に、追加したモバイル デバイスが [Mobile Devices] の下に表示されます。

アラート ポリシーを作成する場合は、[通知] セクションで [Google Cloud Console (mobile)] を選択し、リストからモバイル デバイスを選択します。

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. Google Cloud Console の [通知チャネル] ウィンドウで、PagerDuty 通知チャネルを追加します。
    1. [PagerDuty] セクションで、[Add new] をクリックします。
    2. [表示名] を入力します。この名前は、統合を追加したときに PagerDuty に指定した名前と一致する必要があります。
    3. PagerDuty によって生成された Integration Service Key を [Service Key] フィールドに入力します。
    4. [保存] をクリックします。
  4. (省略可)双方向同期を構成する場合は、次の操作を行います。
    1. PagerDuty で、[構成]、[サービス] の順に選択し、統合の構成時に入力したサービス名を選択します。
    2. [設定を編集] をクリックし、[インシデントの作成] をオンにします。この操作で、デフォルト設定の [アラートとインシデントの作成] の選択が解除されます。

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

このドキュメントの Stackdriver のスクリーンショットは古いバージョンのものですが、情報は正確です。

SMS

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

  1. [SMS] セクションの [新規追加] をクリックして、表示される手順を行います。
  2. [保存] をクリックします。

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

Slack

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

  1. Slack で: Slack サイトで Slack チャンネルを作成します。チャンネル URL をメモしておきます。
  2. Cloud Console で、[モニタリング] を選択します。

    [Monitoring] に移動

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

  4. [Slack] セクションで、[Add new] をクリックします。Slack のログインページが表示されます。

    1. Slack のワークスペース URL を入力します。
    2. [許可] をクリックして Google Cloud Monitoring の Slack ワークスペースへのアクセスを有効にします。

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

Webhook

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

  1. webhook ハンドラ: Monitoring から webhook データを受信するエンドポイント URL を特定します。
  2. [Webhook] セクションの [新しく追加] をクリックして表示される手順を行います。
  3. [保存] をクリックします。

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

サンプル JSON パケット

イベントを作成する JSON パケットのフォームは次のとおりです。

  {
    "incident": {
      "incident_id": "f2e08c333dc64cb09f75eaab355393bz",
      "resource_id": "i-4a266a2d",
      "resource_name": "webserver-85",
      "state": "open",
      "started_at": 1385085727,
      "ended_at": null,
      "policy_name": "Webserver Health",
      "condition_name": "CPU usage",
      "url": "https://console.cloud.google.com/monitoring/alerting/incidents?project=PROJECT_ID",
      "summary": "CPU for webserver-85 is above the threshold of 1% with a value of 28.5%"
    },
    "version": 1.1
  }

基本認証

Cloud Monitoring から送信された Webhook リクエストに加えて、基本的な認証では、ユーザー名とパスワードに HTTP 仕様が使用されます。Cloud Monitoring では、サーバーが適切な WWW-Authenticate ヘッダーで 401 応答を返す必要があります。基本認証の詳細については、次を参照してください。

トークン認証

トークン認証では、エンドポイント URL のクエリ文字列パラメータと、サーバーがそれ自体と Monitoring の間で秘密であると期待するキーが必要です。トークンを含む URL の例を次に示します。

https://www.myserver.com/stackdriver-hook?auth_token=1234-abcd

Monitoring がインシデントをエンドポイント URL に送信した場合、サーバーは接続されたパラメータを検証できます。この認証方法は、HTTP リクエストの暗号化を SSL/TLS と組み合わせて使用することで、スヌープ元のトークンの学習を防ぐ場合に最も効果的です。

Python でのサーバー例については、このサンプル サーバーをご覧ください。

Pub/Sub

Pub/Sub トピックに通知を送信する方法は次のとおりです。

  1. プロジェクトで次のボタンをクリックして Pub/Sub API を有効にします。

    Pub/Sub API を有効にする

    1. 正しい Google Cloud プロジェクトが選択されていることを確認します。
    2. [有効にする] ボタンが表示されている場合は、ボタンをクリックします。
    3. [API が有効です] が表示されている場合、API はすでに有効になっています。
  2. Pub/Sub トピックをまだ持っていない場合は、トピックの作成の説明に従って作成します。トピックは、通知チャネルとして使用する前に作成しておく必要があります。トピックを作成する次のコマンドは、notificationTopic というものです。

    gcloud pubsub topics create notificationTopic
  3. トピックを使用する通知チャネルを作成します。Monitoring API、gcloud コマンドライン ツール、Cloud Console を使用できます。

    Cloud Console を使用して通知チャネルを作成するには、[Edit notification channels] ウィンドウに移動して、次の操作を行います。

    1. [Cloud Pub/Sub] セクションで、[新しく追加] をクリックします。
    2. チャネルの表示名を入力し、Pub/Sub トピック名を入力して [Add channel] をクリックします。

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

  4. 通知サービス アカウントに、通知チャネルとして使用する各 Pub/Sub トピックを公開する権限を付与します。

    最初の Pub/Sub チャネルを作成すると、Cloud Monitoring は、チャネルが作成されたプロジェクトの Monitoring Notification Service Agent 用のサービス アカウントを作成します。 このサービス アカウントは、このプロジェクトの通知チャネルへの Pub/Sub ベースでの通知の送信を管理します。

    このサービス アカウントには、次の構造の ID があります。

    service-[PROJECT_NUMBER]@gcp-sa-monitoring-notification.iam.gserviceaccount.com

    このアカウントは、Cloud Console の [サービス アカウント] ページではなく [IAM] ページで確認できます。

    このアカウントをトピックに公開する権限を付与するには、トピックの pubsub.publisher IAM ロールをサービス アカウントに付与する必要があります。次のコマンドは、notificationTopicトピックに対して次のように実行します。

    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
    

    コマンドが成功すると、次のような出力が返されます。

    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 リファレンス ページをご覧ください。

    プロジェクト番号はプロジェクト ID と同じではありません。 プロジェクト ID は通常、my-test-project のようにプロジェクト名を表す文字列です。プロジェクト番号は一意の数値の ID です。 プロジェクトの名前、ID、番号は、Cloud Console のプロジェクトのランディング ページで確認できます。また、次のコマンドでも取得できます。

    gcloud projects describe [PROJECT_ID] --format="value(project_number)"
    
  5. チャネルタイプとして Pub/Sub を、通知チャネルとして名前付きトピックを選択して、アラート ポリシーに Pub/Sub チャネルを追加します。

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

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

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

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

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

チャネルの編集と削除

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

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

    [モニタリング] に移動

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

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

    [通知チャネル] ダッシュボードには、通知チャネルの種類ごとにセクションがあります。セクション ヘッダーの下に、そのタイプのすべての設定のリストが表示されます。

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