Trace インターフェースにデータがない
トレースデータがあるはずなのに Google Cloud プロジェクトでトレースを表示できない場合は、次の手順をお試しください。
-
Enable the Cloud Trace API.
Google Cloud コンソールで、[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.5
でtraceidratio
サンプラーを使用するように、環境変数の更新を試みます。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 のガイダンスについては、トレース コンテキストの伝播をご覧ください。