概要
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 件のコメント:
コメントを投稿