StackdriverでGCP上のサービスを監視してみた

今関わっているサービスは、GCPGoogle App Engine (GAE) とGoogle Container Engine (GKE) を使って開発しています。そのサービスの監視にStackdriver Monitoringを使ってみたときのメモです。

現在の印象としては、かなり面白い機能はあるけど、基本的に思えることがうまくできないことがある、なかなか癖のある監視サービスという感じです。いくつかの機能について思ったことを以下に書いておきます。

Uptime Checks

Uptime ChecksはStackdriverの各種機能の中でも割とちゃんと使える機能だと感じました。

大抵の監視サービスだとUptime Checksのチェック先はURLで指定すると思いますが、StackdriverではGAEのModuleやグループで指定できます。下の図は(ぼかしでやや分かりづらいですが)GAEのModuleを選んでいるところです。

f:id:ks888:20160720210822p:plain

細かな設定として、文字列マッチングによる成否条件の設定や、任意のHTTP Header付与もできます。

f:id:ks888:20160720211011p:plain

デフォルト設定でも6リージョンからチェックしてもらえるのは驚きました。まぁ6リージョンいるかは分かりませんが。笑

f:id:ks888:20160720211324p:plain:w500

Pingdomのような外形監視が売りのサービスに比べるとトランザクショナルな監視がないとかありますが、基本的な機能は揃っており、十分使えるレベルだと思います。

リソースの監視

リソース監視は、最初から色々設定されていて助かりましたが、結構ハマりどころがありました。

ある程度のリソース監視は最初から設定されています。特にGAEについては、結構充実しています。まぁPaaSですしね。例えば以下の項目です。

  • Response Codeごとのカウント
  • Response LatencyのAverageと95th percentile
  • CPU使用量
  • メモリの使用量
  • Datastoreの各種操作回数

また、以下のようなグラフも最初から設定されています。以下はHTTP関連のグラフです。

f:id:ks888:20160720211734p:plain

一方で、最初から設定されているグラフにデータが全く来ない、ドキュメントの手順どおりに操作しても監視エージェントをインストールできないなど、ハマりどころもかなりありました。

特に、GKEが起動・管理するGCEインスタンスに、監視エージェントを自動インストールする方法は今でもよく分かりません。手動ならできるのですが。。そもそも、そこは監視しなくていいということなんでしょうか。。

また、相対値をグラフで見たいときにどうするのか、よくわかりませんでした。例えばメモリ使用量ではなくメモリ使用率を見たい場合とか、HTTPリクエストが5XXを返す割合を見たい場合です。収集した値に対する演算は、合計、平均、95th Percentileなど色々ありますが、相対値を見るための方法は見つかりませんでした。

リソース監視については、機能あるいはドキュメントがやや不足気味で、ちょっと使いにくい部分があると思います。

アラート

アラートは設定が大変だったので、正直あまり使いたくないです。

機能不足なわけではないです。機能に関しては、AWSのCloudWatchとかと比較してもそれほど遜色ないと思っています。アプリケーションのログにフィルターをかけてメトリクスとアラートを作成したり、複数のリソースからの値を集約したりできます。以下のように、結構色々な集約方法を選べます。

f:id:ks888:20160723130931p:plain

また、アラートを鳴らす条件を複数設定できるので、例えば、特定のパスにリクエストが来ているときはアラートを鳴らさない、みたいな設定もできます。まぁあまりこだわった条件にすると、メンテが大変そうですが。

アラートで大変だったのは、アラート作成のAPIが見当たらなかったことと、(全GAE Moduleなどの)グループに対してまとめてアラートを設定する機能がうまく動かなかったことです。その結果、個別のGAE Moduleごとに複数のアラートを手動で設定することになってしまいました。当然、時間がかかりますし、設定ミスもありますし、バージョン管理もできません。

さらに、作成したアラートを保存しようとすると「Failed to Save Policy. Please try again or contact support.」と言われ、何度やっても保存できなくなるバグもありました。諦めて最初からアラートを作りなおすとうまく行きます。

このように設定作業で苦しんだので、アラートは僕の中ではあまり使いたくない機能になっています。こうすると楽だよーみたいなのあれば教えて下さい!

感想

まだβですし、ドキュメントも公開されているノウハウもかなり不足していますし、バグじゃないか?と思える挙動もあります。でも、GAEとの相性はいいし、面白い機能もあるので、余裕があれば使ってみるのもありだと思います。