Kubernetesの監視
DatadogはどのようにKubernetesを監視しているのか
「Kubernetes のモニタリング」 には、「Kubernetes 上で動くコンテナたち」と「Kubernetes クラスタ」へのモニタリングが含まれています。
ここでは、「Kubernetes 上で動くコンテナたち」について記載します。
また以降に関しては、下記記事をメインに記載していきます。
Monitoring Kubernetes with Datadog autodiscovery | Datadog
Datadogの仕組み
コンテナを監視する方法としては、以下2パターン存在します。
Agent as side-cars container
同じhost上の別のコンテナとしてモニタリングエージェントを配置するパターンです。
Kubernetesでは、Podの仕組みを使用し、実現することができます。
Agent with Autodiscovery
下記で示す通り、1つのhostに対して、1つのdatadog-agent
を設置することになります。
具体的には、Nodeが3つあった場合は、3つdatadog-agent
を設置することになります。
Kubernetesのメトリクス取得の流れ
- 各ノード上の全コンテナの基本的なメトリクス(CPU, Mem, Disk, Network) を cAdvisor が集める
- 各ノードの kubelet は同一ホスト上の cAdvisor からモニタリングデータを取得する
- Heapster は各 kubelet からモニタリングデータを集める
- Heapster はストレージバックエンド(現状は InfluxDB) にデータを投げる
- InfluxDB はもらったデータを永続化する
- Grafana は InfluxDB に永続化されたデータを元に可視化する
- kubedash は Heapster が短期的に持つデータを元に可視化する
Monitoring Kubernetes with Datadog autodiscovery | Datadogより引用
cAdvisor
コンテナのresource情報(CPU、メモリなど)を集めてくれます。
【Docker】cAdvisorによるDockerコンテナの監視について - Qiita
Heapster
Datadogのメトリクス取得の流れ
- ユーザーは KV ストアに Docker イメージごとの”モニタリング設定テンプレート”をセットしておく
- dd-agent は KV ストアから”モニタリング設定テンプレート”を取得する
- dd-agent は kubelet から pods リストを取得する
- dd-agent は “モニタリング設定テンプレート” と pods リストを元にモニタリング設定ファイルを動的に生成する
- dd-agent は生成したモニタリング設定ファイルを元にカスタムメトリクスを返すエンドポイントをモニタリングする
- コンテナの元になったイメージに”モニタリング設定テンプレート”が存在する場合のみモニタリング対象になる(モニタリング対象は同じホスト上のコンテナのみ)
Monitoring Kubernetes with Datadog autodiscovery | Datadogより引用
その他参考になる記事
How to monitor Google Kubernetes Engine with Datadog | Datadog
Monitoring Kubernetes with Datadog | Datadog
Kubernetesで監視を行う際の注意点 - Qiita
Datadog resources · GitHub
Comments