docker監控


docker自帶的監控命令

 

docker自帶了三個監控命令即ps, top, stats

 

ps

 

docker ps 可以幫助我們很快的了解當前正在運行的容器

-a:會顯示已經停掉的容器

 
[root@host1 ~]# docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS               NAMES
2dc535903c8f        weaveworks/scope:1.10.1   "/home/weave/entrypo…"   14 minutes ago      Up 14 minutes                           weavescope
9c0b7af8f210        busybox                   "sh"                     38 minutes ago      Up 38 minutes                           b10
39e40500da10        busybox                   "sh"                     38 minutes ago      Up 38 minutes                           b9
3f5f98e0c5d2        busybox                   "sh"                     38 minutes ago      Up 38 minutes                           b8
a0cef436f61a        busybox                   "sh"                     38 minutes ago      Up 38 minutes                           b7
 

 

top

 

如果想知道某個容器中運行了哪些進程,可以執行如下的命令:

[root@host1 ~]# docker top 266910b9b
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                7162                7144                0                   14:55               pts/0               00:00:00            sh

 

stats

 

用於顯示每個容器各種資源的使用情況。

而且是動態刷新的

[root@host1 ~]# docker stats 266910b9b
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
266910b9bede        b3                  0.00%               52KiB / 487.5MiB    0.01%               978B / 280B         1.97MB / 8.19kB     1

 

ps,top, stats 這幾個命令是 docker 自帶的,優點是運行方便,很適合想快速了解容器運行狀態的場景。其缺點是輸出的數據有限,而且都是實時數據,無法反應歷史變化和趨勢。接下來要介紹的幾個監控工具會提供更豐富的功能。

 

sysdig

 

sysdig 是一個輕量級的系統監控工具,同時它還原生支持容器

 

第一步:安裝運行

[root@host1 ~]# docker container run -it --rm --name=sysdig --privileged=true --volume=/var/run/docker.sock:/host/var/run/docker.sock --volume=/dev:/host/dev --volume=/proc:/host/proc:ro --volume=/boot:/host/boot:ro --volume=/lib/modules:/host/lib/modules:ro --volume=/usr:/host/usr:ro sysdig/sysdig

可以看到,sysdig 容器是以privileged 方式運行,而且會讀取操作系統 /dev,/proc 等數據,這是為了獲取足夠的系統信息。

 

第二步:進入容器

安裝完之后默認進入了容器

 

第三步:啟動sysdig

輸入命令csysdig,進入到了如下的界面

 

第四步:使用sysdig

這是一個類似 linux top 命令的界面,但要強大太多。sysdig 按不同的 View 來監控不同類型的資源,點擊底部Views 菜單(或者按 F2),顯示 View 選擇列表。

我們選擇進入containers,即容器監控

回車或者雙擊 Containers,進入容器監控界面。

sysdig 會顯示該 Host 所有容器的實時數據,每兩秒刷新一次。

如果想按某一列排序,比如按使用的內存量,很簡單,點一下列頭 VIRT。

 

如果想看某個容器運行的進程,比如 b3,將光標移到目標容器,然后回車或者雙擊。

 

 

sysdig 的特點如下:

  1. 監控信息全,包括 Linux 操作系統和容器。
  2. 界面交互性強。

不過 sysdig 顯示的是實時數據,看不到變化和趨勢。而且是命令行操作方式,需要 ssh 到 Host 上執行,會帶來一些不便。

 

weave scope監控容器

 

Weave Scope 的最大特點是會自動生成一張 Docker 容器地圖,讓我們能夠直觀地理解、監控和控制容器。也是我個人比較喜歡的一款監控軟件

 

第一步:安裝

[root@ken ~]# curl -L git.io/scope -o /usr/local/bin/scope
[root@ken ~]# chmod a+x /usr/local/bin/scope

 

第二步:啟動

scope launch將以容器方式啟動 Weave Scope

 
[root@ken ~]# scope launch 
8d4082e5447876fd5c6bdb8b22bef3e3624878321d20fea5c95f2efd4646ef01
Scope probe started
Weave Scope is listening at the following URL(s):
  * http://192.168.122.1:4040/
  * http://10.32.0.3:4040/
  * http://172.20.10.2:4040/
 

 

根據提示,Weave Scope 的訪問地址為 http://[Host_IP]:4040/

 

如果要查看容器的詳細信息,比如 sysdig,可以點擊該容器的圖標。

 

在容器信息的上面還有一排操作按鈕。

 

分別是:

attach 到容器啟動進程,相當於執行docker container attach

打開 shell,相當於執行docker container exec

重啟容器,相當於執行docker container restart

暫停容器,相當於執行docker container pause

關閉容器,相當於執行docker container stop

 

這排按鈕使我們能夠遠程控制容器,相當方便。比如可以直接跳進 sysdig 容器,啟動csysdig 監控工具

除了容器,Weave Scope 還可以監控 Docker Host。

 

weave scope監控主機

 

點擊頂部HOSTS 菜單項,地圖將顯示當前 host。

 

與容器類似,點擊該 host 圖標將顯示詳細信息。

 

host 頁面上部有一個按鈕,點擊可直接打開 host 的 shell 窗口,這個遠程管理功能真的很貼心。

相當於進入到了你的系統,執行的任何命令都會同步到系統。非常nice

 

weave scope監控多主機

 

我們已經領略了 Weave Scope 的豐富功能和友好的操作界面。不過它還有一個重要功能:多主機監控。

真正的部署環境都不可能只有一個 host,如果能在一個界面上監控整個容器環境,那絕對是件非常有效率的事情。

 

ken: 172.20.10.2

host1: 172.20.10.7

 

第一步:兩個主機上面都需要安裝weave scope(兩台主機都需要執行)

[root@ken ~]# curl -L git.io/scope -o /usr/local/bin/scope
[root@ken ~]# chmod a+x /usr/local/bin/scope

 

第二步:兩個主機上都執行如下的命令

這樣,無論訪問 http://172.20.10.2:4040 還是 http://172.20.10.7:4040,都能監控到兩個 host。

[root@ken ~]# scope launch 172.20.10.2 172.20.10.7

 

第三步:查看主機

 

第四步:查看正在運行的容器

容器圖標右面標明了所在的 主機。

 

第五步:搜索

如果部署的容器數量太多(很常見),Weave Scope 還提供了強悍的搜索功能。

 

Continue Reading


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM