このトピックでは、Spanner コンポーネントを調べてレイテンシの原因を特定し、OpenTelemetry を使用してそのレイテンシを可視化する方法について説明します。このトピックのコンポーネントの概要については、Spanner リクエストのレイテンシ ポイントをご覧ください。
OpenTelemetry は、トレース、指標、ログなどのテレメトリー データを作成および管理できるオープンソースのオブザーバビリティ フレームワークとツールキットです。これは、OpenTracing と OpenCensus の統合の結果です。詳細については、OpenTelemetry とはをご覧ください。
Spanner クライアント ライブラリは、OpenTelemetry オブザーバビリティ フレームワークを使用して指標とトレースを提供します。レイテンシ ポイントを特定するの手順に沿って、Spanner でレイテンシが発生しているコンポーネントを見つけます。
準備
レイテンシ指標のキャプチャを始める前に、OpenTelemetry による手動計測について理解しておいてください。 テレメトリー データをエクスポートするための適切なオプションを使用して、OpenTelemetry SDK を構成する必要があります。利用可能な OpenTelemetry エクスポータ オプションは複数あります。OpenTelemetry Protocol(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 リクエストの最初のバイトと、クライアントがデータベースから受信したレスポンスの最後のバイトの間の時間(ミリ秒単位)です。
クライアントの往復レイテンシをキャプチャする
Spanner クライアントの往復レイテンシ指標は、OpenTelemetry を使用してサポートされていません。ブリッジで OpenCensus を使用して指標をインストゥルメント化し、データを OpenTelemetry に移行できます。
クライアントの往復レイテンシを可視化する
指標を取得した後、Cloud Monitoring でクライアントの往復レイテンシを可視化できます。
クライアントの往復レイテンシ指標で、5 パーセンタイル レイテンシを示すグラフの例を次に示します。パーセンタイルのレイテンシを 50 パーセンタイルまたは 99 パーセンタイルのいずれかに変更するには、[Aggregator] メニューを使用します。
このプログラムは roundtrip_latency
というビューを作成します。この文字列は、Cloud Monitoring にエクスポートされたときの指標の名前の一部となります。
GFE レイテンシをキャプチャして可視化する
Google Front End(GFE)のレイテンシは、Google ネットワークがクライアントからリモート プロシージャ コールを受信してから、GFE がレスポンスの最初のバイトを受信するまでの時間(ミリ秒単位)です。
GFE レイテンシをキャプチャする
Spanner クライアント ライブラリを使用して次のオプションを有効にすると、GFE のレイテンシ指標をキャプチャできます。
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 パーセンタイルのいずれかに変更するには、[Aggregator] メニューを使用します。
クエリのレイテンシをキャプチャして可視化する
このクエリのレイテンシは、Spanner データベースで SQL クエリを実行するのにかかる時間の長さ(ミリ秒単位)です。
クエリのレイテンシをキャプチャする
次の言語に対する、クエリのレイテンシをキャプチャできます。
Java
Go
クエリのレイテンシを可視化する
指標を取得した後、Cloud Monitoring でクエリのレイテンシを可視化できます。
以下は、GFE レイテンシ指標の分布集計を示すグラフの例です。パーセンタイルのレイテンシを 5 番目、50 番目、95 番目、または 99 番目のパーセンタイルに変更するには、[アグリゲータ] メニューを使用します。
このプログラムでは query_stats_elapsed
と呼ばれる OpenCensus ビューが作成されます。
この文字列は、Cloud Monitoring にエクスポートされたときの指標の名前の一部となります。
次のステップ
OpenTelemetry の詳細を確認する。
OpenTelemetry に移行する方法を確認する。
指標を使用してレイテンシを診断する方法を学習する。