Trace インターフェースにデータがない
トレースデータがあるはずなのに Google Cloud プロジェクトでトレースを表示できない場合は、次の手順をお試しください。
-
Enable the required 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 クライアント ライブラリの更新については、Issue #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"
他のすべてのサービスでは、
OTEL_TRACES_SAMPLER
環境変数を設定せずに、デフォルトのサンプラー(parentbased_always_on
)を使用します。デフォルト設定では、スパンのサンプリング決定が親スパンから継承されます(そのようなスパンが存在する場合)。親スパンが存在しない場合は、スパンがサンプリングされます。
アプリケーションが常にすべてのスパンをサンプリングしない限り、一般に、リクエストをエンドツーエンドでトレースすることはできません。それは、エンドツーエンド リクエストの各コンポーネントはサンプリングの決定を独自に行うためです。ただし、トレース ヘッダーに
sampled
フラグを追加して、このフラグをtrue
に設定することで、決定に影響を与えることができます。この設定は、子コンポーネントがリクエストをサンプリングするヒントです。トレース ヘッダーの詳細については、コンテキスト伝播用のプロトコルをご覧ください。
トレースにスパン ID メッセージが見つからない
トレースに「スパン ID が見つかりません」というメッセージが含まれています。
分散トレース システムでは、不完全なトレースが想定されます。サンプリングされたスパンに、受信されていない別のスパンへの参照が含まれている場合、トレースは不完全です。未解決の参照は、次の理由により発生する可能性があります。
- 参照されたスパンがサンプリングされませんでした。
- 参照されたスパンがサンプリングされましたが、Cloud Trace でまだ受信されていないか、スパンを受信したが保存されていません。
不完全なトレースを表示すると、Cloud Trace のトレースの詳細ペインに「スパン ID がありません」というメッセージが表示されます。
「スパン ID がありません」というメッセージが常に表示される場合は、次のことをお試しください。
管理するコンポーネントについて、このフィールドが存在する場合は、ヘッダーの
sampled
フラグ フラグを尊重して伝播するようにします。この設定は、子コンポーネントがリクエストをサンプリングするためのヒントです。トレース ヘッダーの詳細については、コンテキスト伝播用のプロトコルをご覧ください。通常、Google Cloud サービスでは、このヒントが尊重されます。ただし、トレースデータを書き込むレートも制限されます。
Anthos Service Mesh を使用している場合は、それらの構成におけるトレース コンテキストの伝播についてのガイダンスに従ってください。Anthos Service Mesh のガイダンスについては、トレース コンテキストの伝播をご覧ください。