まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

Google Container Engine(kubernetes)の監視環境の動向

まずはk8sの監視環境について理解する

DatadogやStackdriverなどの外部サービスを使うと簡単にできそうなのではあるが、そもそも何を監視しようとしているのかよく分からない。なので、まずは外部サービスを使わない場合どうなっているか調べてみた。 ちなみにStackdriverはGoogleが買収したDatadogみたいなやつ。

外部サービスを使わない場合

  • kubernetes上にメトリクス収集サービスをたてることになる
  • まずはcAdvisorというGoogle製のコンテナのリソースメトリクス収集君。ただしこれはkubeletにすでに組み込まれている

f:id:masato47744:20171109010454p:plain

  • HeapsterというこれまたGoogle製のクラスターのメトリクス収集君がcAdvisorのAPIを呼んで収集してformatして保存先に流す
  • Heapsterがしているのは、収集したメトリクスをinfluxDBやGoogle Cloud Monitoringに送るのが役割
  • 収集したメトリクスはinfluxDBなどの時系列DBを自前でたててそこに保存しておく

f:id:masato47744:20171109010708p:plain

  • これだけだと各リソースのメトリクスは収集できても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の柔軟性やグラフの見やすさ、使い勝手的にも。 これを調べたのは半年前ぐらいだから今はどうなんだろうか。