push サブスクリプションのトラブルシューティング

push サブスクライバーは、Pub/Sub からユーザー指定の HTTPS エンドポイントにメッセージが送信される Pub/Sub サブスクライバーの一種です。ユーザーは、プッシュ サーバーのリクエストに対して HTTP 200 レスポンスを返すことで、プッシュされたメッセージを確認します。このドキュメントでは、Pub/Sub push サブスクリプションに関する一般的なトラブルシューティングのヒントを示します。push サブスクリプションの詳細については、push サブスクライバー ガイドをご覧ください。

Pub/Sub サブスクリプションを効果的にモニタリングするには、まず配信レイテンシの健全性スコアsubscription/delivery_latency_health_score)を確認して、どの要因が予期しないレイテンシに貢献しているかを確認することをおすすめします。

失敗するプッシュ エンドポイントまたは遅いプッシュ エンドポイント

エンドポイントからエラー レスポンス コードが返された場合、メッセージ配信は失敗したと見なされ、後で再試行されます。これにより、エンドポイントで重複するメッセージが受信される可能性があります。

push サブスクリプションをモニタリングするために使用できる指標は複数あります。Cloud Metrics の subscription/push_request_count 指標は、push エンドポイントからのレスポンスを response_coderesponse_class で分類します。レスポンスは、エンドポイントの不具合の可能性を特定するために役立ちます。この指標に ack 以外の response_class を含むデータがある場合、push エンドポイントが Pub/Sub にエラーを返していることを示します。最も一般的なエラーは次のとおりです。

  • deadline_exceeded レスポンス クラスは、プッシュ エンドポイントが必要な確認応答(ACK)期限内に応答しなかったことを示します。subscription/push_request_latencies 指標は、push ACK レイテンシのトラッキングに役立ちます。

  • invalid レスポンス クラスは、エンドポイントが Pub/Sub が正しく理解または処理できないレスポンスを返したことを示します。

  • remote_server_4xx レスポンス クラスは通常、認証または権限の問題を示します。これらはエンドポイントから返される HTTP レスポンス コードであるため、このレスポンス コードが返されるシナリオを確認します。認証が有効になっている場合は、アカウントにエンドポイントに対する適切な権限があることを確認します。push サブスクリプションでの認証の仕組みについて詳しくは、こちらをご覧ください。

  • remote_server_5xx レスポンス クラスは、エンドポイント側のサーバーサイドの問題を示します。エンドポイントでリクエストを処理できません。これは、メンテナンス中またはサービス停止中である可能性があります。エンドポイントをホストするサーバーのステータスを確認します。

  • unreachable レスポンス クラスは、エンドポイント サーバーにまったくアクセスできないことを示します。エンドポイントの URL に入力ミスがないか確認します。

Pub/Sub API のよくあるエラーコード の詳細を確認する。

VPC-SC 境界内のプッシュ サブスクリプションの制限

プロジェクトで VPC Service Controls(VPC-SC)保護が有効になっている場合、プッシュ サブスクリプションの作成には制限があります。既存のプッシュ サブスクリプションは引き続き機能しますが、新しいプッシュ サブスクリプションを作成すると、Request is prohibited by organization's policy というエラーが表示されます。具体的には、push エンドポイントがデフォルトの run.app URL を使用する Cloud Run サービスである場合にのみ、新しい push サブスクリプションを作成できます。詳細と具体的な制限については、Pub/Sub のドキュメントVPC-SC のドキュメントをご覧ください。