トラブルシューティング

このページには、Trace のトラブルシューティング情報が記載されています。

Trace インターフェースにデータがない

トレースデータがあるはずなのに Google Cloud プロジェクトでトレースを表示できない場合は、次の手順をお試しください。

  1. Enable the Cloud Trace API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. Google Cloud コンソールで、[API とサービス] ページに移動します:

    [API とサービス] に移動

    [Cloud Trace API] というラベルの付いた行を見つけたら、次のことを試します。

    • [リクエスト] というラベルが付いた列に数値情報が表示されていない場合、Google Cloud プロジェクトにトレースデータが送信されていません。

      この問題を解決するには、アプリケーションとプロキシが正しいプロジェクトにトレースを送信するように構成されていることを確認します。

    • [Cloud Trace API] を選択し、[指標] タブを選択して、[API メソッド別のエラー] というラベルの付いたグラフを見つけます。

      • 書き込みが失敗した場合は、認証情報を提供するサービス アカウントに Cloud Trace エージェント(roles/cloudtrace.agent)のロールを付与します。このロールには、権限 cloudtrace.traces.patch が含まれています。この権限により、アプリケーションがスパンデータを Google Cloud プロジェクトに書き込むことができます。

        詳しくは、Cloud Trace IAM のロールをご覧ください。

      • 読み取りが失敗する場合は、Google Cloud プロジェクトの IAM ロールに Cloud Trace ユーザー(roles/cloutrace.user)ロールの権限が含まれていることを確認します。このロールの権限の一覧については、Cloud Trace の IAM ロールをご覧ください。

OpenTelemetry を使用するように Go アプリを更新した後のトレースデータがない

アプリケーションがトレースをキャプチャするためにクライアント ライブラリを使用しており、OpenTelemetry を使用するようにアプリケーションを更新した後、Cloud Trace データが表示されなくなりました。

Go 用の一部の Google クライアント ライブラリは OpenCensus と統合されているため、OpenCensus ブリッジを使用する必要があります。ブリッジで解決される問題の詳細については、OpenCensus Bridge をご覧ください。

Go 用 Google クライアント ライブラリの更新については、問題 #4237 をご覧ください。

デプロイされたアプリのトレースデータがない

Cloud Trace API を使用して Google Cloud プロジェクトにデータを送信するアプリをデプロイしましたが、トレースデータが収集されません。

次のようにしてください。

  • Google Cloud コンソールの [Trace エクスプローラ] ページをにデータが表示されない場合は、Trace インターフェースにデータがないというタイトルのセクションの手順に沿って作業します。

  • アプリが Google Cloud にデプロイされていない場合や、サービス アカウントを使用して認証情報を提供する場合は、サービス アカウントに Cloud Trace エージェント(roles/cloudtrace.agent)のロールが付与されていることを確認してください。

    このロールには、アプリケーションがスパンデータを Google Cloud プロジェクトに書き込むことができる権限 cloudtrace.traces.patch が含まれています。

  • アプリが OpenTelemetry に依存している場合は、次のようにします。

    • ルートサービスの場合、OpenTelemetry がサンプリング レート 0.5traceidratio サンプラーを使用するように、環境変数の更新を試みます。

      export OTEL_TRACES_SAMPLER="traceidratio"
      export OTEL_TRACES_SAMPLER_ARG="0.5"
      
    • 他のすべてのサービスでは、デフォルトのサンプラー(parentbased_always_on)を使用するように、OTEL_TRACES_SAMPLER 環境変数を未設定のままにします。デフォルトの設定では、スパンのサンプリング決定は、親スパン(存在する場合)から継承されます。親スパンが存在しない場合、スパンはサンプリングされます。

    アプリケーションが常にすべてのスパンをサンプリングしない限り、一般に、リクエストをエンドツーエンドでトレースすることはできません。それは、エンドツーエンド リクエストの各コンポーネントはサンプリングの決定を独自に行うためです。ただし、トレース ヘッダーに sampled フラグを追加し、このフラグを true に設定することで、この決定に影響を与えることができます。この設定は、リクエストをサンプリングするように子コンポーネントにヒントを与えます。トレース ヘッダーの詳細については、コンテキスト伝播のプロトコルをご覧ください。

トレースにスパン ID メッセージが見つからない

トレースに「スパン ID が見つかりません」というメッセージが含まれています。

分散トレース システムでは、不完全なトレースが想定されます。サンプリングされたスパンに、受信されていない別のスパンへの参照が含まれている場合、トレースは不完全です。未解決の参照は、次の理由で発生する可能性があります。

  • 参照されたスパンがサンプリングされませんでした。
  • 参照されたスパンがサンプリングされましたが、Cloud Trace でまだ受信されていないか、スパンを受信したが保存されていません。

不完全なトレースを表示すると、Cloud Trace のトレースの詳細ペインに「Missing span ID」というメッセージが表示されます。

「スパン ID がありません」というメッセージが常に表示される場合は、次のことをお試しください。

  • 管理するコンポーネントでは、このフィールドが存在する場合、ヘッダーの sampled フラグを尊重し、伝播するようにしてください。この設定は、リクエストをサンプリングするように子コンポーネントにヒントを与えます。トレース ヘッダーの詳細については、コンテキスト伝播のプロトコルをご覧ください。

    通常、Google Cloud サービスでは、このヒントが尊重されます。ただし、トレースデータの書き込みレートも制限されます。

  • Cloud Service Mesh を使用している場合は、それらの構成におけるトレース コンテキストの伝播についてのガイダンスに従ってください。Cloud Service Mesh のガイダンスについては、トレース コンテキストの伝播をご覧ください。