このページでは、Cloud Run エラーの一般的なトラブルシューティング方法について説明します。Personalized Service Health は、基盤となる Cloud de Confiance by S3NS インフラストラクチャに起因するすべての Cloud Run インシデントを公開し、プロジェクトに影響する Cloud de Confiance by S3NS サービスの中断を特定します。また、Personalized Service Health イベントにアラートを設定することも検討してください。すべての Cloud de Confiance by S3NS サービスに影響するインシデントについては、Cloud de Confiance by S3NS Service Health ダッシュボードを確認してください。
Cloud Run リソースに関連する問題を解決するには、Cloud Run トラブルシューティング ガイドの次のセクションをご覧ください。
Cloud Run のトラブルシューティング戦略
以降のセクションでは、一般的なトラブルシューティング戦略を適用してエラーを解決する方法を説明します。トラブルシューティング ガイドの手順を踏んでもなおエラーが発生する場合は、次のステップをご確認ください。
Cloud Logging を使用して適切なログを出力する
デバッグ用の適切なログがあると、Cloud Run リソースのトラブルシューティングが容易になります。コンテナログとリクエストログを関連付ける方法でログを書き込む必要があります。
関連付けられたログを使用すると、詳細な分析が必要なリクエストを特定し、リクエストのトレースを見つけて、問題の根本原因を分析できます。ログの書き込みの詳細については、コンテナログを書き込むをご覧ください。
ログ エクスプローラでインスタンスを調査する
Cloud Run の各リクエストログには、リクエストを処理するインスタンスを表す instanceId フィールドが含まれています。指定した同時実行値によっては、1 つのインスタンスで複数のリクエストが同時に処理されている場合があります。
複数のインスタンスが同時にログを出力している場合は、インスタンスをフィルタして、インスタンスのクラッシュにつながる連続したリクエストを特定する必要があります。
インスタンスをフィルタすると、コールド スタートやレイテンシの増加に関連する特定のパフォーマンスの問題をデバッグできます。後続の同時リクエストで値が再利用される場合、これらの問題は、グローバル スコープで宣言された変数にバインドされることがあります。たとえば、インスタンスに単一の接続プールのグローバル オブジェクトを作成し、このオブジェクトを複数のリクエストで使用する場合があります。
ログ エクスプローラで特定のインスタンスのみを表示するには、次の操作を行います。
Cloud de Confiance コンソールで、[ログ エクスプローラ] ページに移動します。
ページの上部で既存の Cloud de Confiance by S3NS プロジェクトを選択するか、新しいプロジェクトを作成します。
リソースの Cloud Run リビジョン(サービスの場合)または Cloud Run ジョブ(ジョブの場合)を選択します。
ログエントリを開いて、特定のインスタンスでフィルタします。
インスタンス ID の値をクリックし、[一致エントリを表示] を選択します。
インスタンスを調査する際に、Gemini Cloud Assist Investigations を使用して、ログに関する追加の分析情報を取得できます。ログ エクスプローラを使用して調査を開始するさまざまな方法については、Gemini ドキュメントの Gemini Cloud Assist Investigations を使用したトラブルシューティングをご覧ください。
予期しないリクエスト レイテンシを解決する
レイテンシに関する問題が発生した場合は、次のことを行います。
レイテンシが Cloud Run リソースに対するすべてのリクエストに影響しているのか、ごく一部のリクエストにのみ影響しているのかを確認します。Cloud Run は Cloud Monitoring と自動的に統合されます。設定も構成も必要ありません。
個々のリクエスト レイテンシの指標を表示するには、次の操作を行います。
Cloud de Confiance コンソールで、[Cloud Run] ページに移動します。
左側のナビゲーションで使用可能なリストから、サービスまたはジョブを選択します。
[指標] タブをクリックして、[リクエストのレイテンシ] ダッシュボードを表示します。
Cloud Monitoring でレイテンシ指標を表示するには、[指標] リストから、[Cloud Run のリビジョン] > [Request_latencies] > [リクエストのレイテンシ] を選択します。
使用可能なすべての Cloud Run 指標のリストと詳細については、Cloud Monitoring の Cloud de Confiance by S3NS 指標をご覧ください。
レイテンシが高いリクエストを特定して、レイテンシの原因を把握します。Cloud Trace または Cloud Logging を使用して、特定のリクエストに要した時間を把握できます。
Cloud Logging を使用してレイテンシの高いリクエストを特定するには、
traceSampled=trueフィルタを適用して、Cloud Logging のログを Cloud Trace のトレースと関連付けます。詳細については、Cloud Logging との統合をご覧ください。他のサービスへのリクエストなどの依存関係が原因でレイテンシの問題が発生することがあります。このようなリクエストを特定するには、リクエストをターゲットとする明示的なロギングが必要です。このようなログを出力しないと、Cloud Run サービスに起因するレイテンシの問題として表示される可能性があります。
また、選択した期間のコンテキストでレイテンシの急増を評価することも検討してください。急増の重要性は相対的です。短い期間での急増は、長い期間では無視できる場合があり、その逆も同様です。このため、時間枠はレイテンシ データの解釈に大きな影響を与えます。
受信リクエストのレイテンシを短縮し、コールド スタートを回避するには、最小インスタンス数を増やしてみてください。また、ソースコードの変更も検討し、バッキング サービスへの接続数を制限するようにスケーリングの設定を調整する必要があります。
詳細については、パフォーマンスの最適化をご覧ください。
接続に関する問題のトラブルシューティング
Cloud Run サービスで接続の問題が発生している場合は、次の戦略とツールを使用して問題を診断することを検討してください。
PCAP サイドカー: ネットワーク レベルの詳細な分析を行うには、Cloud Run サービスとともに PCAP サイドカーをデプロイします。このサイドカー コンテナは、同じネットワーク Namespace 内で
tcpdumpを使用してパケット キャプチャを実行します。サイドカーはメインの下り(内向き)コンテナから切り離され、パケット キャプチャを実行するために変更を加える必要はありません。サイドカーは独自のリソースも使用するため、tcpdumpがプライマリ サービスに割り当てるリソースと競合することはありません。Cloud Run リビジョンと Cloud Run 関数のネットワーク インテリジェンスと接続テスト: Cloud Run リソースとエンドポイント間のネットワーク パスで自動チェックを実行します。これにより、VM インスタンス、IP アドレス、Google マネージド サービスに接続するときに、Cloud Run リソースとの間のトラフィックをブロックする可能性のある構成ミスを見つけることができます。
Cloud Run リソースのログを確認する: ログには、接続の問題(障害、 タイムアウト、接続拒否など)に関するエラー メッセージが表示されます。これらのログを見ると、接続の問題がアプリケーションにあるのか、ネットワークにあるのかがわかることがよくあります。
次のステップ
Cloud Run のドキュメントで問題の解決策が見つからない場合は、次の手順で対応します。
- Cloud カスタマーケアに問い合わせて、サポートケースを登録する。
- StackOverflow で質問してコミュニティからサポートを受けるか、
google-cloud-runタグを使用して類似の問題を検索する。 - 公開バグトラッカーを使用して、バグの報告や機能リクエストを行う。