1. 程式人生 > >Docker監控:google/cadvisor

Docker監控:google/cadvisor

需要 arp 窗口 屬性 light cloud 希望 seconds 命令

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資源監控。

  免費的東西,你還想怎麽樣呢?

Docker監控:google/cadvisor