當 Docker 部署規模逐步變大後,可視化監控容器環境的性能和健康狀態將會變得愈來愈重要。docker
在本章中,咱們將討論幾個目前比較經常使用的容器監控工具和方案,爲你們構建本身的監控系統提供參考。ubuntu
首先咱們會討論 Docker 自帶的幾個監控子命令:ps, top 和 stats。而後是幾個功能更強的開源監控工具 sysdig, Weave Scope, cAdvisor 和 Prometheus。最後咱們會對這些不一樣的工具和方案作一個比較。網絡
ps工具
docker container ps
是咱們早已熟悉的命令了,方便咱們查看當前運行的容器。性能
root@ubuntu-01:~# docker container ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES root@ubuntu-01:~#
前面已經有大量示例,這裏就不贅述了。值得注意的是,新版的 Docker 提供了一個新命令 docker container ls
,其做用和用法與 docker container ps
徹底同樣。不過 ls
含義可能比 ps
更準確,因此更推薦使用。操作系統
root@ubuntu-01:~# docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES root@ubuntu-01:~#
若是想知道某個容器中運行了哪些進程,能夠執行 docker container top [container]
命令。code
root@ubuntu-01:~# docker container top bbox2 UID PID PPID C STIME TTY TIME CMD root 45037 45010 0 10:34 pts/0 00:00:00 sh root@ubuntu-01:~#
上面顯示了 bbox2 這個容器中的進程。命令後面還能夠跟上 Linux 操做系統 ps
命令的參數顯示特定的信息,好比 -au
。進程
root@ubuntu-01:~# docker container top bbox2 -au USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 45037 0.1 0.0 1320 4 pts/0 Ss+ 10:34 0:00 sh root@ubuntu-01:~#
stats內存
docker container stats
用於顯示每一個容器各類資源的使用狀況。資源
root@ubuntu-01:~# docker container stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 555e99376d37 bbox2 0.00% 976KiB / 1.924GiB 0.05% 1.26kB / 0B 0B / 0B 1 CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 555e99376d37 bbox2 0.00% 976KiB / 1.924GiB 0.05% 1.26kB / 0B 0B / 0B 1 CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 555e99376d37 bbox2 0.00% 976KiB / 1.924GiB 0.05% 1.26kB / 0B 0B / 0B 1 CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 555e99376d37 bbox2 0.00% 976KiB / 1.924GiB 0.05% 1.26kB / 0B 0B / 0B 1 CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 555e99376d37 bbox2 0.00% 976KiB / 1.924GiB 0.05% 1.26kB / 0B 0B / 0B 1 ^C root@ubuntu-01:~#
默認會顯示一個實時變化的列表,展現每一個容器的 CPU 使用率,內存使用量和可用量。
注意:容器啓動時若是沒有特別指定內存 limit,stats 命令會顯示 host 的內存總量,但這並不意味着每一個 container 都能使用到這麼多的內存。
除此以外 docker container stats
命令還會顯示容器網絡和磁盤的 IO 數據。
默認的輸出有個缺點,顯示的是容器 ID 而非名字。咱們能夠在 stats
命令後面指定容器的名稱只顯示某些容器的數據。好比 docker container stats sysdig weave
。
ps,top, stats 這幾個命令是 docker 自帶的,優勢是運行方便,很適合想快速瞭解容器運行狀態的場景。其缺點是輸出的數據有限,並且都是實時數據,沒法反應歷史變化和趨勢。接下來要介紹的幾個監控工具會提供更豐富的功能。