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 的特點如下:
- 監控信息全,包括 Linux 操作系統和容器。
- 界面交互性強。
不過 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 還提供了強悍的搜索功能。