このトピックでは、Spanner コンポーネントを調べてレイテンシの原因を特定し、OpenTelemetry を使用してそのレイテンシを可視化する方法について説明します。このトピックのコンポーネントの概要については、Spanner リクエストのレイテンシ ポイントをご覧ください。
OpenTelemetry は、トレース、指標、ログなどのテレメトリー データを作成して管理できるオープンソースのオブザーバビリティ フレームワークとツールキットです。これは、OpenTracing と OpenCensus を統合したものです。詳細については、OpenTelemetry とはをご覧ください。
Spanner クライアント ライブラリは、OpenTelemetry オブザーバビリティ フレームワークを使用して指標とトレースを提供します。レイテンシ ポイントを特定するの手順に沿って、Spanner でレイテンシが発生しているコンポーネントを見つけます。
準備
レイテンシ指標のキャプチャを開始する前に、OpenTelemetry による手動計測をよく理解してください。テレメトリー データをエクスポートするには、適切なオプションを使用して OpenTelemetry SDK を構成する必要があります。利用可能な OpenTelemetry エクスポータ オプションは複数あります。OpenTelemetry プロトコル(OTLP)エクスポータを使用することをおすすめします。その他のオプションには、Google Cloud エクスポータまたは Google Managed Service for Prometheus Exporter での OTel Collector の使用が含まれます。
アプリケーションを Compute Engine で実行している場合は、Ops エージェントを使用して OpenTelemetry Protocol の指標とトレースを収集できます。詳細については、OTLP 指標とトレースを収集するをご覧ください。
依存関係を追加する
OpenTelemetry SDK と OTLP エクスポータを構成するには、次の依存関係をアプリケーションに追加します。
Java
Go
OpenTelemetry オブジェクトを挿入する
次に、OTLP エクスポータを使用して OpenTelemetry オブジェクトを作成し、SpannerOptions
を使用して OpenTelemetry オブジェクトを挿入します。
Java
Go
クライアントの往復レイテンシをキャプチャして可視化する
クライアントのラウンドトリップ レイテンシは、クライアントが GFE と Spanner API フロントエンドの両方からデータベースに送信する Spanner API リクエストの最初のバイトと、クライアントがデータベースから受信したレスポンスの最後のバイトの間の時間(ミリ秒単位)です。
クライアントの往復レイテンシをキャプチャする
OpenTelemetry では、Spanner クライアントのラウンドトリップ レイテンシ指標はサポートされていません。ブリッジを使用して OpenCensus で指標を計測し、データを OpenTelemetry に移行できます。
クライアントの往復レイテンシを可視化する
指標を取得した後、Cloud Monitoring でクライアントの往復レイテンシを可視化できます。
クライアントの往復レイテンシ指標の 5 パーセンタイル レイテンシを示すグラフの例を次に示します。パーセンタイル レイテンシを 50 パーセンタイルまたは 99 パーセンタイルに変更するには、[集計] メニューを使用します。
このプログラムは roundtrip_latency
というビューを作成します。この文字列は、Cloud Monitoring にエクスポートされたときの指標の名前の一部となります。
GFE レイテンシをキャプチャして可視化する
Google Front End(GFE)レイテンシは、Google ネットワークがクライアントからリモート プロシージャ コールを受信してから、GFE がレスポンスの最初のバイトを受信するまでの時間(ミリ秒単位)です。
GFE レイテンシをキャプチャする
GFE レイテンシ指標をキャプチャするには、Spanner クライアント ライブラリを使用して次のオプションを有効にします。
Java
Go
GFE レイテンシを可視化する
指標を取得した後、Cloud Monitoring でクエリの GEE レイテンシを可視化できます。
GFE レイテンシ指標の分布の集計を示すグラフの例を次に示します。パーセンタイル レイテンシを 5 パーセンタイル、50 パーセンタイル、95 パーセンタイル、99 パーセンタイルに変更するには、[集計] メニューを使用します。
このプログラムは spanner/gfe_latency
というビューを作成します。この文字列は、Cloud Monitoring にエクスポートされたときの指標の名前の一部となります。
Spanner API リクエストのレイテンシをキャプチャして可視化する
Spanner API リクエストのレイテンシは、Spanner API フロントエンドが受信したリクエストの最初のバイトから Spanner API フロントエンドが送信したレスポンスの最後のバイトまでの時間(秒単位)です。
Spanner API リクエストのレイテンシをキャプチャする
このレイテンシは、デフォルトで Cloud Monitoring の指標の一部として利用できます。キャプチャしてエクスポートする操作は必要ありません。
Spanner API リクエストのレイテンシを可視化する
Metrics Explorer グラフツールを使用すると、Cloud Monitoring で spanner.googleapis.com/api/request_latencies
指標用のグラフを可視化できます。
Spanner API リクエストのレイテンシ指標の 5 パーセンタイルのレイテンシを示すグラフの例を次に示します。パーセンタイル レイテンシを 50 パーセンタイルまたは 99 パーセンタイルに変更するには、[集計] メニューを使用します。
クエリのレイテンシをキャプチャして可視化する
このクエリのレイテンシは、Spanner データベースで SQL クエリを実行するのにかかる時間の長さ(ミリ秒単位)です。
クエリのレイテンシをキャプチャする
次の言語に対する、クエリのレイテンシをキャプチャできます。
Java
Go
クエリのレイテンシを可視化する
指標を取得した後、Cloud Monitoring でクエリのレイテンシを可視化できます。
GFE レイテンシ指標の分布の集計を示すグラフの例を次に示します。パーセンタイル レイテンシを 5 パーセンタイル、50 パーセンタイル、95 パーセンタイル、99 パーセンタイルに変更するには、[集計] メニューを使用します。
このプログラムでは query_stats_elapsed
と呼ばれる OpenCensus ビューが作成されます。
この文字列は、Cloud Monitoring にエクスポートされたときの指標の名前の一部となります。
次のステップ
OpenTelemetry の詳細を確認する。
OpenTelemetry に移行する方法を確認する。
指標を使用してレイテンシを診断する方法を学習する。