このページでは、通知が想定どおりに届かない理由と、そのような状況に備えるための方法について説明します。
通知が受信されない
構成した通知チャンネルから通知が届かない場合は、次の操作を行います。
-
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが「Logging」の結果を選択します。
- 適切な Google Cloud プロジェクトを選択します。
ログで通知チャンネル イベントをクエリします。
- [ログ名] メニューを開き、[notification_channel_events] を選択します。
- [重大度] メニューを開き、[エラー] を選択します。
- 省略可: カスタム期間を選択するには、期間セレクタを使用します。
- [クエリを実行] をクリックします。
前述の手順では、次のクエリを作成します。
resource.type:"stackdriver_notification_channel" logName="projects/PROJECT_ID/logs/monitoring.googleapis.com%2Fnotification_channel_events" severity=ERROR
通常、障害情報は概要行と
jsonPayload
フィールドに含まれます。たとえば、ゲートウェイ エラーが発生すると、概要行に「failed with 502 Bad Gateway」が表示されます。
Webhook 通知を受信できない
このセクションは、構成済みの Webhook 通知チャンネルで通知を受信しない場合に該当します。
プライベート エンドポイント
プライベート エンドポイントがある場合は、この通知トピックへの pull サブスクリプションと組み合わせて、Pub/Sub 通知を使用します。プライベート エンドポイントへの通知に Webhook を使用することはできません。
Pub/Sub 通知チャンネルを構成すると、インシデント通知は Identity and Access Management 制御が設定された Pub/Sub キューに送信されます。Pub/Sub トピックにクエリまたはリッスンできるすべてのサービスでこれらの通知を使用できます。たとえば、App Engine、Cloud Run、Compute Engine 仮想マシンで実行されているアプリケーションでこれらの通知を使用できます。
pull サブスクリプションを使用する場合、メッセージの受信を待機するリクエストが Google に送信されます。これらのサブスクリプションには Google へのアクセスが必要ですが、ファイアウォールやインバウンド アクセス用のルールは必要ありません。
パブリック エンドポイント
配信が失敗した理由を特定するには、Cloud Logging ログエントリで失敗情報を調べます。
たとえば、ログ エクスプローラを使用し、次のようなフィルタによって、通知チャンネル リソースのログエントリを検索できます。
resource.type="stackdriver_notification_channel"
Pub/Sub 通知を受信できない
構成済みの Pub/Sub 通知チャンネルで通知を受信しない場合は、次の操作を試してください。
通知サービス アカウントが存在することを確認します。サービス アカウントが削除されている場合、通知は送信されません。
サービス アカウントが存在することを確認するには、次のようにします。
-
Google Cloud コンソールで [IAM] ページに移動します。
このページを検索バーで検索する場合は、小見出しが「IAM と管理」の結果を選択します。
次の命名規則のサービス アカウントを検索します。
service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
このサービス アカウントが一覧にない場合は、[Google 提供のロール付与を含める] を選択します。
通知のサービス アカウントが存在しない場合は、Monitoring がサービス アカウントを作成するための Pub/Sub 通知チャンネルを作成する必要があります。
-
Google Cloud コンソールで、[notifications アラート] ページに移動します。
このページを検索バーで検索する場合は、小見出しが「Monitoring」の結果を選択します。
- [Edit notification channels] をクリックします。
[Pub/Sub] セクションで、[新しく追加] をクリックします。
通知サービス アカウントが存在しない場合、Monitoring によって作成されます。[Create Pub/Sub Channel] ダイアログに、通知サービス アカウントの名前が表示されます。
通知チャンネルを追加しない場合は、[キャンセル] をクリックします。それ以外の場合は、通知チャンネルの作成を完了し、[チャネルを追加] をクリックします。
サービス アカウントに Pub/Sub トピックをパブリッシュする権限を付与します。
- 新しいブラウザタブでドキュメント(通知チャンネルを作成する)を開きます。
- 「Pub/Sub」タブを選択し、そのページの「サービス アカウントを承認する」セクションの手順に沿って操作します。
-
通知のサービス アカウントに、目的の Pub/Sub トピックの通知を送信する権限があることを確認します。
サービス アカウントの権限を表示するには、Google Cloud コンソールか Google Cloud CLI コマンドを使用します。
- Google Cloud コンソールの [IAM] ページに、各サービス アカウントのロールが一覧表示されます。
- Google Cloud コンソールの Pub/Sub の [トピック] ページに、各トピックが一覧表示されます。トピックを選択すると、[権限] タブに、サービス アカウントに付与されたロールが一覧表示されます。
すべてのサービス アカウントとそれらのロールを一覧表示するには、次の Google Cloud CLI コマンドを実行します。
gcloud projects get-iam-policy PROJECT_ID
このコマンドに対するレスポンスの一部を次に示します。
serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com role: roles/monitoring.notificationServiceAgent - members: [...] role: roles/owner - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com role: roles/pubsub.publisher
コマンド レスポンスにはロールのみが含まれ、トピックごとの権限は含まれません。
特定のトピックの IAM バインディングを一覧参照するには、次のコマンドを実行します。
gcloud pubsub topics get-iam-policy TOPIC
このコマンドのレスポンスの例を次に示します。
bindings: - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com role: roles/pubsub.publisher etag: BwXPRb5WDPI= version: 1
通知サービス アカウントを認可する方法については、サービス アカウントを認可するをご覧ください。
VM がシャットダウンしても通知は届きません
仮想マシン(VM)がシャットダウンしたときに通知を受け取るには、VM を定期的に照会する稼働時間チェックを作成し、その稼働時間チェックをモニタリングするアラート ポリシーを作成します。Virtual Private Cloud(VPC)を使用している場合は、プライベート稼働時間チェックの作成が必要になることがあります。
compute.googleapis.com/instance/uptime
指標をモニタリングするアラート ポリシーでは、VM がシャットダウンしても通知されません。この指標の場合、アラート ポリシーは RUNNING
状態の VM インスタンスの時系列のみをモニタリングします。VM が STOPPED
や DELETED
などの他の状態にある場合はモニタリングされません。VM インスタンスの状態については、VM インスタンスのライフサイクルをご覧ください。
リクエスト数のアラート ポリシーの通知が受信されない
serviceruntime.googleapis.com/api/request_count
指標をモニタリングするアラート ポリシーの通知が届かない場合は、ポリシーの調整期間が 7 時間 30 分以内になっているか確認してください。
SMS 通知メッセージまたは確認コードが届かない
SMS 通知や確認コードが届かない場合は、SMS メッセージの上限に達していないことを確認してください。このエラーを確認できるログが残っている可能性があります。ログで Denied quota token
を確認してください。
一般的な推奨事項として、通知を SMS チャンネルにのみ依存することはおすすめしません。SMS 通知は「ベスト エフォート」ベースで提供されます。