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

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

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

push エンドポイントが失敗するか、遅い

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

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

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

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

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

  • remote_server_5xx レスポンス クラスは、エンドポイント側のサーバーサイドの問題を示します。エンドポイントがリクエストを処理できない。原因としては、進行中のメンテナンスや停止が考えられます。エンドポイントをホストしているサーバーのステータスを確認します。

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

Pub/Sub API の最も一般的なエラーコード の詳細を確認する。

VPC-SC 境界内の push サブスクリプションに関する制限事項

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