Docker自帶了容器監控功能,可以對容器進行相關的效能監控,指標檢視
主要包括:
- 主機的CPU情況和使用量
- 主機的記憶體情況和使用量
- 主機的本地映象情況
- 主機的容器執行情況
常規使用docker ps -a ,docker images命令檢視後兩者,當然docker stats命令就是監控相關容器例項情況。
[root@vm-50-151 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 14330de27f9d yatho_nginx:1.0.1 "/usr/local/sbin/run." 26 hours ago Up 26 hours 0.0.0.0:32770->22/tcp, 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp nginx_test d4e1352fa5a7 c782eddf525a "/bin/sh -c '-y updat" 27 hours ago Exited (2) 27 hours ago stoic_kilby b573605ad104 c782eddf525a "/bin/sh -c 'yum inst" 29 hours ago Exited (1) 29 hours ago tender_jennings 480b1bbe7845 docker.io/hello-world "/hello" 13 days ago Exited (0) 13 days ago trusting_visvesvaraya [root@vm-50-151 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE yatho92/yatho_nginx_centos6.5 1.0.0 f75f41326048 26 hours ago 1.243 GB yatho_nginx 1.0.1 f75f41326048 26 hours ago 1.243 GB docker.io/centos latest d123f4e55e12 12 days ago 196.6 MB docker.io/hello-world latest 05a3bd381fc2 9 weeks ago 1.84 kB docker.io/hagaico/centos-base-6.5 latest 17e89775b93c 3 years ago 595.3 MB [root@vm-50-151 ~]# docker stats CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 14330de27f9d 0.00% 1.297 MiB / 3.86 GiB 0.03% 3.142 kB / 3.436 kB 6.675 MB / 0 B 3 CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 14330de27f9d 0.00% 1.297 MiB / 3.86 GiB 0.03% 3.142 kB / 3.436 kB 6.675 MB / 0 B 3 CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 14330de27f9d 0.00% 1.297 MiB / 3.86 GiB 0.03% 3.142 kB / 3.436 kB 6.675 MB / 0 B 3 CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 14330de27f9d 0.00% 1.297 MiB / 3.86 GiB 0.03% 3.142 kB / 3.436 kB 6.675 MB / 0 B 3
也可以使用類似top命令檢視程式情況
[root@vm-50-151 ~]# docker stats nginx_test CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS nginx_test 0.00% 1.297 MiB / 3.86 GiB 0.03% 3.142 kB / 3.436 kB 6.675 MB / 0 B 3 CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS nginx_test 0.00% 1.297 MiB / 3.86 GiB 0.03% 3.142 kB / 3.436 kB 6.675 MB / 0 B 3 CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS nginx_test 0.00% 1.297 MiB / 3.86 GiB 0.03% 3.142 kB / 3.436 kB 6.675 MB / 0 B 3
如果想要看到更為詳細的容器屬性,還可以通過netcat,使用Docker遠端API來檢視。傳送一個HTTP GET請求/containers/[CONTAINER_NAME]
,其中CONTAINER_NAME
是你想要統計的容器名稱。你可以從這裡看到一個容器stats請求的完整響應資訊。在上述的例子中你會得到快取、交換空間以及記憶體的詳細資訊。
當然這種方式並不會令人接受,大家還是希望能夠看到非常直觀,詳細的視覺化介面
CAdvisor是一個易於設定並且非常有用的工具,我們不用非要SSH到伺服器才能檢視資源消耗,而且它還給我們生成了圖表。此外,當叢集需要額外的資源時,壓力錶(pressure gauges )提供了快速預覽。而且,CAdvisor是免費的,並且還開源。
另外,它的資源消耗也比較低。但是,它有它的侷限性,它只能監控一個Docker主機。因此,如果你是多節點的話,那就比較麻煩了,你得在所有的主機上都安裝一個CAdvisor,者肯定特別不方便。值得注意的是,如果你使用的是Kubernetes,你可以使用heapster來監控多節點叢集。另外,在圖表中的資料僅僅是時長一分鐘的移動視窗,並沒有方法來檢視長期趨勢。如果資源使用率在危險水平,它卻沒有生成警告的機制。如果在Docker節點的資源消耗方面,你沒有任何視覺化介面,那麼CAdvisor是一個不錯的開端來帶你步入容器監控,然而如果你打算在你的容器中執行任何關鍵任務,那你就需要一個更強大的工具或者方法。
CAdvisor使用:
下載官方映象:
[root@vm-50-151 ~]# docker pull google/cadvisor Using default tag: latest Trying to pull repository docker.io/google/cadvisor ... latest: Pulling from docker.io/google/cadvisor 709515475419: Pull complete 5760eeb1525d: Downloading [=======================> ] 6.32 MB/13.74 MB e485506b272e: Download complete e485506b272e: Pulling fs layer
啟用映象容器例項,對映埠
[root@vm-50-151 /]# docker run \
> --volume=/:/rootfs:ro \
> --volume=/var/run:/var/run:rw \
> --volume=/sys:/sys:ro \
> --volume=/var/lib/docker/:/var/lib/docker:ro \
> --publish=8080:8080 \
> --detach=true \
> --name=cadvisor \
> google/cadvisor:latest
38423c30e04364265999c2642d54d6737b798f887b19be045c440ce90968c548
[root@vm-50-151 /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
38423c30e043 google/cadvisor:latest "/usr/bin/cadvisor -l" 14 seconds ago Up 12 seconds 0.0.0.0:8080->8080/tcp cadvisor
14330de27f9d yatho_nginx:1.0.1 "/usr/local/sbin/run." 27 hours ago Up 27 hours 0.0.0.0:32770->22/tcp, 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp nginx_test
開啟連結檢視,容器宿主機IP:8080
該容器對於我們來說已經足夠使用了,不過相比較更加專業的公司,該工具顯示的docker資訊詳細程度不夠,整合度也不太強,而且無生成警報的能力,也只能監控容器資源,不支援非docker資源監控。
免費的東西,你還想怎麼樣呢?