今回はcAdvisorを導入してコンテナのリソースを取りたいと思います。
cAdvisorインストール
コンテナの監視はcAdvisorというものが有名のようです。
公式に沿ってインストールします。監視用のコンテナを立てるだけ。
ホストごとにしか乗せられないようなのでswarmではなくstandaloneで立てます。
監視コンテナをreplicateして両機に乗せるのもなんか違うなと思い、エージェントみたいなものと思って各ホストに載せます。
1号機にインストール
masashi@lab-docker1:~$ 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 \ --privileged \ --device=/dev/kmsg \ gcr.io/cadvisor/cadvisor:latest Unable to find image 'gcr.io/cadvisor/cadvisor:latest' locally latest: Pulling from cadvisor/cadvisor 188c0c94c7c5: Pull complete 2d4828968d6c: Pull complete b28a9b13dc6d: Pull complete 031224e6222c: Pull complete Digest: sha256:ddadf3e2fd880deb4e0f3606d34a0d9da1165e3801116075d98a1901635dc9e8 Status: Downloaded newer image for gcr.io/cadvisor/cadvisor:latest 2da2ddf130766c730348403622b5cba70ac256348e65126a29c0b4488dda1349
コンテナが立ち上がりました。
masashi@lab-docker1:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2da2ddf13076 gcr.io/cadvisor/cadvisor:latest "/usr/bin/cadvisor -…" 19 seconds ago Up 17 seconds (health: starting) 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp cadvisor 4910b4db6c72 pihole/pihole:latest "/s6-init" 6 minutes ago Up 6 minutes (healthy) 53/udp, 53/tcp, 80/tcp, 67/udp pi-hole_pihole.1.bnq31qeabtjyncogacmvy1qfj 0a1ecf78ca39 portainer/portainer-ce:2.18.2 "/portainer -H tcp:/…" 6 minutes ago Up 6 minutes 8000/tcp, 9000/tcp, 9443/tcp portainer_portainer.1.f0rk74q8x7vsnl0ai64t7ileu 9352d9b0acd3 portainer/agent:2.18.2 "./agent" 6 minutes ago Up 6 minutes portainer_agent.i06s83zzw3xyfjpvp8fj4jybk.4ckbckqmlnwwfnbdvna2lunqe
cAdvisorへアクセス
8080ポートで上げたのでアクセスしてみます。
OK。画面見えてます。
コンテナ上げるだけでここまで見れちゃうのは便利すぎる。
2号機でも同じことやります。
prometheus.yml
prometheusが認識できるようにcAdvisor用のconfigを書きます。
2機あるので2つ記載。
インターバルはグローバルに合わせるべくコメントアウトしました。
- job_name: "cadvisor1" # scrape_interval: 5s static_configs: - targets: ["10.0.1.1:8080"] - job_name: "cadvisor2" # scrape_interval: 5s static_configs: - targets: ["10.0.1.2:8080"]
prometheusを再起動してtargetの認識もOK。
Grafanaで取得
ここは前回と同じなので割愛します。
pfSenseとは別のdocker監視用のダッシュボードを作成。
とりあえずCPU、メモリ率、I/Oの情報など取ってみました。
psSenseの画面とあまり変わり映えしませんがいったんこんなもので。
CPUは使用率が上がらないので見えませんがメモリは一応コンテナの分も取得して少し見た目変化を付けました。
これで家の監視環境もひとまず完成です。
アラート系は何も設定していないのでしばらくは手動で監視を行います。
家の環境だから大量トラフィックは起きないのでピーク等が測れないのが残念。