はじめに
Google Cloud ではシステムの稼働状況を知るための方法として、メトリクスを Cloud Monitoring で確認するのはもちろんですが、その情報をより詳細に知るための Cloud Trace について記載します。
以下で各サービスで Observability 等のタブでメトリクス閲覧を容易になっている点記載しておりますが、そこからさらに明らかにするための方法の一つになります。
概要
Cloud Trace では1つのリクエストの中の以下のような情報を把握することが可能です。
- どこの API に依存関係があるか
- どこの API ないし、どのクエリでどの程度の時間を要しているか
サンプルとしては以下のような形です。
上の図では1つ目のリクエストの先に2つの API にリクエストしております。
そして各 API でのレイテンシーが表示されています。
ドキュメントにも記載がありますが、サポート対象の環境は以下になります。
- GCE
- GKE
- Cloud Run
- App Engine(フレキシブル、スタンダード)
- Google Cloud 以外の環境
この中でも Cloud Run、Cloud Functions、App Engine(制限付きですが)ではトレースデータが自動で収集されるようになっています。
そのため、各サービスでデプロイ後に対象 API へリクエストすることで、すぐに Trace でき、状態が確認できるかと思います。
内容
掲載したサンプル以外でどのような見え方でレイテンシーが閲覧できるか、記載していきます。
概要
こちらが初めに表示される概要画面です。
- 最近のトレース
- 最近のトレースされたものの中でもレイテンシが長いものが優先して表示され、レイテンシに問題がある場合、こちらですぐ確認ができるようになっています。
- 頻度が高い URI
- リクエストの頻度が高い URI が表示されており、それのレイテンシも表示されております。
- 頻度が高い RPC
- リモートプロシージャコールの中でも頻度が高いものが表示されており、それのレイテンシも表示されております。
- 課金対象のトレーススパン
- 課金としては最初の250万まで無料で、それ以降は100万スパン毎に$0.20となりますので、その課金状況を把握できるものになります
- 日時分析レポート
- リモートプロシージャコールを行うリクエストのレイテンシ全体
- 伏せ字箇所にURIが入り、対象 URI のレイテンシ時間とそれが対象 URI のリクエスト数のどの程度の割合を占めるか、が描画されています
- 上記の描画を1週間前の1日分と前日1日分を比較されるようになっており、例えば1週間以内のデプロイや設定変更が影響しているか、の確認が行なえるようになっております
- リモートプロシージャコールを行うリクエストのレイテンシ全体
トレースリスト
こちらがトレースリストの画面です。
画面上の右側の表ではリクエストされた時間で並んでます。
表内の項目のどれでも昇順、降順することは可能なので、レイテンシの遅い URI を探すことも可能です。
またトレースグラフ内の青く飛び出ている箇所が一番レイテンシを要していたものになるので、それの詳細を知りたい場合、選択すると、以下のように詳細を確認することができます。
こちらを見てみると、青色のバーが対象リクエストになり、そのバー内の伏せ字箇所が URI となり、その隣にレイテンシが表示されています。
また、それに紐づいていくつかの API がコールされており、それも URI、レイテンシが閲覧可能です。
またリクエストを選択した状態で右側の詳細箇所から、対象トレースのログ情報へ以下の青色の表示箇所からすぐにアクセスが可能です。
ログ情報は Cloud Logging 上で表示され、該当トレースに関するログのクエリを実行された状態で閲覧できるため、継続した調査も行ないやすい状態になっています。
分析レポート
こちらでは概要に表示されていたリクエストを中心とした URI で一週間前と対象日付でのレイテンシの違いをレポートされる仕組みになっております。
試しに一つ開くと概要にあったようなレイテンシの差をすぐに確認できるようになっています。
サンプルトレースへのアクセスの可能でそれの詳細についてこのページから確認しにいくことも可能です。
このレポートは標準のもの以外でカスタムできるため、調査対象に応じてレポートすることが可能です。
カスタム内容としては以下の内容でカスタマイズできます。
デプロイ前後やスペックアップ前後など変更点に対する比較を容易に行なえる機能だと感じました。
所感
Google Cloud の機能としてはそれほど目の当たりにする機会がなかった Trace の機能について見直して確認しました。
別途 APM 導入などを行ない同様のことを行なうようなケースはあるかと思いますが、機能的にトレースを見る上では、確認の行ないやすさや、ログへのアクセスしやすさなど、ユーザ目線に立たれて行なえているように感じ、利用しやすいと感じました。
標準装備のサービスを利用している場合且つ、APM ツールなどを利用していない場合は、この機能を利用することで、ボトルネックの洗い出しや、現在の状況確認に有効だと感じました。
今後もこういった運用目線のサービスにも注目し活用していきたいと思います。