dockerをモニタリングする

ここでは、いくつかの無料のツールを使用して、簡単にモニタリングする方法を紹介していきます。

docker stats

docker statsは、dockerに付属するツールでデフォルトでインストールされています。コンテナリソースをLinuxのtopコマンドのようにライブストリームで表示します。使用方法は、 コンテナIDをdocker statsの後に指定するだけです。

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a5b713b0be52        ubuntu:latest       "bash"              3 minutes ago       Up 3 minutes                            keen_nash
$ sudo docker stats a5b713b0be52
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT    MEM %               NET I/O             BLOCK I/O           PIDS
a5b713b0be52        keen_nash           4.35%               7.172MiB / 7.48GiB   0.09%               9.49kB / 0B         17.4MB / 0B         1
docker events

docker eventsは、コンテナライフサイクルのイベントをモニタリングします。
例えば、コンテナの起動や終了イベントをモニタリングできます。

$ sudo docker events 
2019-01-06T16:28:04.617197272+09:00 container create 267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca (image=ubuntu:latest, name=naughty_lehmann)
2019-01-06T16:28:04.618719113+09:00 container attach 267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca (image=ubuntu:latest, name=naughty_lehmann)
2019-01-06T16:28:04.691576928+09:00 network connect 2c53c1158426b7c0e6dd980104832d0e9f60a14f8291a37e180e68fef4b0ba8c (container=267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca, name=bridge, type=bridge)
2019-01-06T16:28:04.988327654+09:00 container start 267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca (image=ubuntu:latest, name=naughty_lehmann)
2019-01-06T16:28:04.989355465+09:00 container resize 267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca (height=42, image=ubuntu:latest, name=naughty_lehmann, width=169)
2019-01-06T16:28:12.738333362+09:00 container die 267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca (exitCode=0, image=ubuntu:latest, name=naughty_lehmann)
2019-01-06T16:28:12.831735032+09:00 network disconnect 2c53c1158426b7c0e6dd980104832d0e9f60a14f8291a37e180e68fef4b0ba8c (container=267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca, name=bridge, type=bridge)

dieメッセージは、コンテナが実行をストップしたときに表示します。
また、--sinceで時間軸を区切ったりすることも可能です。

$ sudo docker events --since 2019-01-06T16:20:00+09:00
cAdvisor

コマンドラインでも充分モニタリング可能ですが、トレンドなど視覚的に把握したい場合、グラフで表示させるとわかりやすいです。
cAdvisorのDockerイメージをインストール/実行するには、次のコマンドを実行します。
github.com

$ sudo docker run \
>   --volume=/:/rootfs:ro \
>   --volume=/var/run:/var/run:rw \
>   --volume=/sys:/sys:ro \
>   --volume=/var/lib/docker/:/var/lib/docker:ro \
>   --volume=/cgroup:/cgroup:ro \
>   --publish=8080:8080 \
>   --detach=true \
>   --name=cadvisor \
>   --privileged=true \
> google/cadvisor:latest
Unable to find image 'google/cadvisor:latest' locally
latest: Pulling from google/cadvisor
ab7e51e37a18: Pull complete [f:id:shinji629:20190107181924p:plain]
a2dc2f1bce51: Pull complete 
3b017de60d4f: Pull complete 
Digest: sha256:9e347affc725efd3bfe95aa69362cf833aa810f84e6cb9eed1cb65c35216632a
Status: Downloaded newer image for google/cadvisor:latest
bcbd00167aa44dd75dfd948e6dac24907baae81398917e0bf3e38988663c9ad2

http://localhost:8080にアクセスするとこのようなグラフが表示されます。
f:id:shinji629:20190107181924p:plain