容器網路(十)監控利器 sysdig【74】
(二)監控利器 sysdig
sysdig 是一個輕量級的系統監控工具,同時它還原生支援容器。通過 sysdig 我們可以近距離觀察 linux 作業系統和容器的行為。
Linux 上有很多常用的監控工具,比如 strace,tcpdump,htop, iftop,lsof ......
而 sysdig 則是將這些工具的功能整合到一個工具中,並且提供一個友好統一的操作介面。
下面我們將演示 sysdig 強大的監控能力。
安裝和執行 sysdig 的最簡單方法是執行 Docker 容器,命令列為:
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
等資料,這是為了獲取足夠的系統資訊。
啟動後,通過 docker container exec -it sysdig bash
進入容器,執行 csysdig
命令,將以互動方式啟動 sysdig。
這是一個類似 linux top 命令的介面,但要強大太多。sysdig 按不同的 View 來監控不同型別的資源,點選底部Views
選單(或者按 F2),顯示 View 選擇列表。
介面左邊列出了 sysdig 支援的 View,一共 30 多項,涵蓋了作業系統的各個方面,因為這裡主要是討論容器監控,所以我們將游標移到 Containers
回車或者雙擊 Containers
,進入容器監控介面。
sysdig 會顯示該 Host 所有容器的實時資料,每兩秒重新整理一次。各列資料的含義也是自解釋的,如果不清楚,可以點一下底部Legend
(或者按 F7)。如果想按某一列排序,比如按使用的記憶體量,很簡單,點一下列頭VIRT
。
如果想看某個容器執行的程序,比如weavescope
,將游標移到目標容器,然後回車或者雙擊。
還可以繼續雙擊檢視程序中的執行緒。
返回上一級,按退格鍵即可。
sysdig 的互動功能很強,如果介面顯示的條目很多,可以點選底部 Search
選單,然後輸入關鍵字進行查詢。如下圖,關鍵字為 service
如果覺得介面重新整理太快,看不清楚關注的資訊,可以點選底部 Pause
選單。
sysdig 的特點如下:
- 監控資訊全,包括 Linux 作業系統和容器。
- 介面互動性強。
不過 sysdig 顯示的是實時資料,看不到變化和趨勢。而且是命令列操作方式,需要 ssh 到 Host 上執行,會帶來一些不便。下一節介紹的 Weave Scope 在這方面似乎提供了更好的解決方案。