Google Container Engine(kubernetes)の監視環境の動向
まずはk8sの監視環境について理解する
DatadogやStackdriverなどの外部サービスを使うと簡単にできそうなのではあるが、そもそも何を監視しようとしているのかよく分からない。なので、まずは外部サービスを使わない場合どうなっているか調べてみた。 ちなみにStackdriverはGoogleが買収したDatadogみたいなやつ。
外部サービスを使わない場合
- kubernetes上にメトリクス収集サービスをたてることになる
- まずはcAdvisorというGoogle製のコンテナのリソースメトリクス収集君。ただしこれはkubeletにすでに組み込まれている
- HeapsterというこれまたGoogle製のクラスターのメトリクス収集君がcAdvisorのAPIを呼んで収集してformatして保存先に流す
- Heapsterがしているのは、収集したメトリクスをinfluxDBやGoogle Cloud Monitoringに送るのが役割
- 収集したメトリクスはinfluxDBなどの時系列DBを自前でたててそこに保存しておく
- これだけだと各リソースのメトリクスは収集できてもk8s全体のobject単位の監視ができていない
- そこで、kube-state-metricsという全体で見て容量に空きはあるかなどの観点でk8sのapi-serverに問い合わせして収集してくれるadd-onをさらにたてることになる
- そしてこれらをまとめてGrafanaなどのグラフツールも自前でたててやっとこさグラフが見えるという感じ
Datadogを利用する場合
- とりあえず上記のことをがっと全部やってくれる💯
- k8sでdd-agent入れるには、clusterの各nodeにcontainerとしてagent動かしたい🤔
- しかしpodで入れようとすると同一nodeで動く可能性がある
- そこで
deamon sets
という各nodeに1つcontainerを動かせるk8sの仕組みを利用して起動する
- Pro planは10container/host なので、
$18/month * ノード数
- Docker integrationでより詳細なmetricsもいける
- GCP integrationも各種揃っている
Stackdriverを利用する場合
- とりあえず上記のことをがっと全部やってくれる💯
- GCPのダッシュボードで見れるような内容なら無料!
- alertも作れるけど、無料プランだと メール通知のみ
- Slack通知したいとなると1Resourceごとに
$8/month * GCP全体のリソース数
- 計算対象のリソースは、GKEのinstance数、GCEのinstance数、CloudSQLのinstance数など全体にかかってしまう
- GKE関係ないけどStackdriverよさそうなところ
- 外形監視が無料で作れて全世界からつっついてくれる
- GAEとの相性がよさそう(agentなしでログが見れたりデバッグできたりするようだ)
まとめ
機能と価格はそう変わらないのでDatadogに軍配が上がる気がする。 alertの柔軟性やグラフの見やすさ、使い勝手的にも。 これを調べたのは半年前ぐらいだから今はどうなんだろうか。