このページでは、OpenTelemetry によるトレース収集の概要について説明します。Spanner リクエストをモニタリングしてデバッグするには、Spanner クライアント ライブラリでトレースを有効にします。クライアントサイド トレースとエンドツーエンド トレースを使用すると、パフォーマンスのモニタリングと問題のデバッグに役立ちます。
トレースでは、クライアントからのリクエストごとに次のような関連情報を提供します。
クライアントが RPC リクエストを送信した時点やクライアントが RPC レスポンスを受信した時点のタイムスタンプを含むスパンで、ネットワークとクライアント システムによって発生したレイテンシが含まれます。
クライアントとその構成に関する情報を提供する属性(Key-Value ペア)。
スパンの重要なイベントを含むアノテーション。
スパンと属性の詳細については、OpenTelemetry ドキュメントのスパンと属性をご覧ください。
エンドツーエンドのトレース
クライアントサイド トレースに加えて、エンドツーエンド トレースを有効にできます。エンドツーエンド トレースは、次のような Spanner に固有のレイテンシの問題を理解してデバッグするのに役立ちます。
レイテンシがアプリケーションと Spanner 間のネットワーク レイテンシによるものなのか、Spanner 内で発生しているものなのかを特定します。
アプリケーション リクエストがルーティングされる Google Cloud リージョンと、クロスリージョン リクエストがあるかどうかを特定します。通常、クロスリージョン リクエストは、アプリケーションと Spanner 間のレイテンシの増加を意味します。
Cloud Trace の過負荷を防ぎ、費用を効果的に管理できるように、エンドツーエンドのトレースでエクスポートできるトレーススパンの数に上限があります。この上限により、トラブルシューティングのためのエンドツーエンドのトレースの使用に影響はありません。
OpenTelemetry
Spanner クライアント ライブラリは、OpenTelemetry API を使用したトレース収集をサポートしています。OpenTelemetry はオープンソースのオブザーバビリティ フレームワークです。OpenTelemetry には、特定のバックエンド用のエクスポータ、サンプリング比率、スパンの上限など、幅広い構成が用意されています。
エクスポータとコレクタを使用してトレースをエクスポートする
構成の一環として、トレースをオブザーバビリティ バックエンドにエクスポートできます。ほとんどのオブザーバビリティ サービス プロバイダは、トレース エクスポータなど、使用できるエクスポータを用意しています。
OpenTelemetry では、エクスポータに加えて、コレクタ を設定することをおすすめします。コレクタにより、サービスがデータを迅速にオフロードでき、コレクタが再試行、バッチ処理、暗号化などの追加処理を行うことができます。コレクタはアプリケーションとともに実行されます。コレクタは OTLP メッセージを受信して処理し、オブザーバビリティ バックエンドにエクスポートします。
制限事項
Spanner トレースには次の制限があります。
- トレーススパンは、Java、Go、Node、Python のクライアント ライブラリでのみ使用できます。
- エンドツーエンド トレースは Cloud Trace にのみエクスポートできます。
課金
トレースを行うと、Spanner の使用量に加えてオブザーバビリティ バックエンドから費用が発生します。
トレーススパンのオブザーバビリティ バックエンドへの取り込みは課金対象です。たとえば、バックエンドとして Cloud Trace を使用する場合は、Cloud Trace の料金に沿って課金されます。
課金について把握するには、トラフィックに基づいて小さなトレース サンプリング比率から始めます。
次のステップ
クライアントサイドとエンドツーエンドのトレースを設定するには、OpenTelemetry を使用してトレースの収集を設定するをご覧ください。