2021年1月11日月曜日

docker swarm 上に cAdvisor をデプロイして swarm 上のコンテンのメトリックを取得してみる

概要

docker swarm 上で動作しているコンテナのメトリックを取得するのに cAdvisor を試してみました
検証ポイントとしては cAdvisor を各ホストで動作させる必要があるのか manager ノードだけで良いのかという点です

環境

  • macOS 11.1
  • docker 19.03.12

docker swarm の構築

こちらを参考に構築してください

cAdvisor のデプロイ: manager のみ

まずは cAdvisor を manager ノードのみにデプロイしてみます

  • docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest

デプロイ完了後以下のエンドポイントでメトリックが取得できることを確認します
269 項目のメトリックが確認できます

  • curl http://localhost:8080/metrics

node1 側でコンテナを起動してみる

manager 側にデプロイした cAdvisor に変化があるか node1 側にコンテナを立てて確認してみます

  • docker run -d nginx

起動したら再度 manager 側にデプロイした cAdvisor のメトリックを確認してみます
メトリック数に変化がないことが確認できると思います

manager 側でコンテナを起動してみる

今度は manager ノード側で上記同様にコンテナを 1 つ起動してみます
すると取得できるメトリックが 336 に増えているのが確認できると思います

つまり cAdvisor は swarm クラスタであっても各ノードにデプロイしなければいけないことがわかります

最後に

swarm 上のコンテナのメトリックを取得したい場合は各ノードで cAdvisor を動作させる必要があることがわかりました
ノードが増えた場合に各ノードにある cAdvisor の値を横断的に見る方法として Prometheus を使う感じなのかなと思います

参考サイト

0 件のコメント:

コメントを投稿