トラブルシューティング

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

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

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

  1. Google Cloud コンソールのナビゲーション パネルで [API とサービス] を選択し、[API とサービスを有効化] をクリックして、Cloud Trace API を有効にします。

    [Cloud Trace API の設定] に移動

  2. [API が有効です] が表示されている場合、API はすでに有効になっています。そうでない場合は、[有効にする] ボタンをクリックします。

  3. ツールバーで [ナビゲーション メニュー] をクリックし、[API とサービス] を選択します。Cloud Trace API の行に [リクエスト] 列、エラー列、または他の列の数値が表示されない場合、トレース リクエストは Google Cloud プロジェクトに到達していません。アプリケーションとプロキシが正しいプロジェクトにトレースを送信するように構成されていることを確認します。

  4. API の使用状況の詳細を表示するには、[Cloud Trace API] をクリックして、[指標] タブを選択します。

    エラーの原因を絞り込むには、[認証情報] フィルタと [メソッド] フィルタを使用して、[API メソッド別のエラー数] チャートに表示される選択内容を確認します。

    • すべての書き込みが失敗する場合は、サービス アカウントに Cloud Trace エージェントのロールへのアクセス権があることを確認します。このロールには権限 cloudtrace.traces.patch が含まれています。詳しくは、Cloud Trace IAM のロールをご覧ください。

    • 読み取りが失敗する場合は、この Google Cloud プロジェクトの Cloud Trace ユーザーのロールへのアクセス権があることを確認します。このロールのすべての権限の一覧については、Cloud Trace の IAM ロールをご覧ください。

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

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

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

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

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

アプリケーションをデプロイし、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 のガイダンスについては、トレース コンテキストの伝播をご覧ください。