このブログでも使っているGCPのロードバランサですが、そのログを見ていたときにちょっと気になったのです。
Stackdriver Loggingを見てみよう
以下のように、Stackdriver Loggingでログで、Cloud HTTP ロードバランサのログが見れると思います。
この右から4番目のnullってなんだって話。
カーソルをあわせてみると・・・
どうやらhttpRequest.latencyの値を拾ってきているけど、データが入っていないっぽい。
たしかにhttpRequestの中にはlatencyという項目はない。。
いろいろ調べたり、GCPに詳しい人とかにも聞いてみたのですが、ここのロギングの項目には見つからない。。
Datadogではなんとlatencyのavg(平均)は見れるっぽいのですが、percentileとかは見れないのです。。
ロードバランサのレスポンスタイムとかの平均値を知ったところで、個人的にはあまり意味がないって感じているんです。。パーセンタイルが知りたいなって。
(ロギングのアクセスごとのreceiveTimestampとtimestampの差分を求めれば、もしかしたらターンアラウンドタイムが求まるんじゃないかって思ったのですが、これについては試してないです。。)
じゃあ、どうやってパーセンタイルを知ることができるのか?
Stackdriver モニタリングを見てみよう
ということで、Stackdriver monitoringを見てみましょう。
メニューからいけます。
開くと以下のようにStackdriverが起動します。右のメニューから「Resources > Google Cloud Load Balancers」を選択する。
みたいロードバランサを選択する。自分の場合はwordpress-blog-pnktsという名前のロードバランサを選択しました。
右の方にあるグラフがそれにあたります。
ちゃんとLatencyの以下のパーセンタイルが見れています
- 99パーセンタイル
- 95パーセンタイル
- 50パーセンタイル
- 5パーセンタイル
- 平均値(画像では隠れてしまっているが)
もちろん、Total Latencyだけでなく、Backend Latency、Frontend RTTの項目のパーセンタイルを確認することができます。
最後に
このように、GCPではロードバランサのlatencyが取りにくそうですが、でも見れないことはなさそうってところまで確認しました。
生ログをBig Queryに投げて集計とかしちゃえばいいのかもしれないですが、こういうやり方もありましたっていう紹介記事でした。
ちなみにAWSのALB(Application Load Balancer)などのロードバランサは、ちゃんとlatencyのパーセンタイルのメトリックは出力されているので、Datadogでも簡単に表示ができますね。そういうのを体感するとAWSのほうがいろいろしっかりしてるのかもって思っちゃいます。。