Docker的監控(簡單部署Sysdig和Weave Scope)

一、Docker的監控

Docker自帶的監控命令

簡單命令介紹
ps
docker container ps 是我們早已熟悉的命令了,方便我們查看當前運行的容器。新版的 Docker 提供了一個新命令 docker container ls,其作用和用法與 docker container ps 完全一樣。不過 ls 含義可能比 ps 更準確,所以更推薦使用。

top
如果想知道某個容器中運行了哪些進程,可以執行 docker container top [container] 命令。命令後面還可以跟上 Linux 操作系統 ps 命令的參數顯示特定的信息,比如 -au。

stats
docker container stats 用於顯示每個容器各種資源的使用情況。默認會顯示一個實時變化的列表,展示每個容器的 CPU 使用率,內存使用量和可用量。注意:容器啓動時如果沒有特別指定內存 limit,stats 命令會顯示 host 的內存總量,但這並不意味着每個 container 都能使用到這麼多的內存。

除此之外 docker container stats 命令還會顯示容器網絡和磁盤的 IO 數據。默認的輸出有個缺點,顯示的是容器 ID 而非名字。我們可以在 stats 命令後面指定容器的名稱只顯示某些容器的數據。比如 docker container stats sysdig weave。

命令執行

1.ps

[root@docker01 ~]# docker ps
//查看容器信息

Docker的監控(簡單部署Sysdig和Weave Scope)

2.top

[root@docker01 ~]# docker top 容器名稱
[root@docker01 ~]# docker top wordpress_wordpress_1 
//查看容器中運行的進程信息,支持 ps 命令參數。

Docker的監控(簡單部署Sysdig和Weave Scope)

3.stats

[root@docker01 ~]# docker stats wordpress_wordpress_1 
//實時查看容器統計信息,查看容器的CPU利用率、內存的使用量以及可用內存總量。

Docker的監控(簡單部署Sysdig和Weave Scope)
默認會顯示一個實時變化的列表,展示每個容器的CPU使用率,內存使用量和可用量

  注意:容器啓動時如果沒有特別指定內存limit,stats命令會顯示host的內存總量,但這並不意味着每個container都能使用到這麼多的內存
  除此之外docker container stats命令還會顯示容器網絡和磁盤的IO數據
  默認的輸出有個缺點,顯示的是容器ID而非名字。我們可以在stats命令後面指定容器的名稱只顯示某些容器的數據。比如docker container stats test1 test2 
[root@docker01 ~]# docker logs 容器名稱
[root@docker01 ~]# docker logs wordpress_wordpress_1 
//查看容器的日誌

二、用 Sysdig 監控服務器

[root@docker01 ~]# docker pull sysdig
//下載sysdig鏡像

通過sysdig運行容器

[root@docker01 ~]# docker 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 

下載插件失敗後可以運行下邊命令,重新下載

root@10ccab83a512:/# system-sysdig-loader
//下載插件失敗後可以運行下邊命令,重新下載

下載成功後,可以運行sysdig命令,查看監控項

root@10ccab83a512:/# sysdig
//運行sysdig命令,查看監控項,它會動態查看

使用 csysdig

csysdig 就是運 ncurses 庫的用戶界面的 sysdig 軟件包,Ncurses 是一個能提供功能鍵定義 ( 快捷鍵 ), 屏幕繪製以及基於文本終端的圖形互動功能的動態庫。在 sysdig 軟件包裏還提供了一個工具 csysdig,該工具執行後,運行界面和 top 命令類似。csysdig 工作界面如圖 5。

Docker的監控(簡單部署Sysdig和Weave Scope)

運行csysdig命令,查看監控項

root@10ccab83a512:/# csysdig
//運行csysdig命令,圖形化界面查看監控項,它會動態查看

csysdig 使用如下快捷鍵:

P:暫停屏幕輸出信息

Enter:進入當前突出顯示的條目。

Ctrl+F:列表搜索。

F1- 幫助信息

F2- 顯示視圖選擇器。這將讓你切換到另一個視圖。

F4- 使用過濾器

F5- 查看 IO 輸出信息

F7 顯示幫助頁面當前顯示的視圖。

F8 打開視圖的操作面板。

F9,打開列排序面板。

Q 放棄退出。

Arrows, PgUP, PgDn, Home, End:圖標上下左右的移動控制。

sysdig按不同的View來監控不同類型的資源,點擊底部Views菜單(或者按F2),顯示View選擇列表

我們將光標移到Containers這一項,界面右邊立即顯示出此view的功能介紹,回車或者雙擊Containers,進入容器監控界面

sysdig會顯示該host所有的容器的實時數據,每兩秒刷新一次。各列數據的含義也是自解釋的,如果不清楚,可以點一下底部的Legend,如果想按某一列排序,比如按使用的內存量,點一下列頭VIRT

如果想查看某個容器的進程,將光標移動到目標容器,然後回車或者雙擊

還可以繼續雙擊查看進程中的線程

返回上一級,按退格鍵即可

sysdig的交互功能很強,如果界面顯示的條目很多,可以點擊底部Search菜單,然後輸入關鍵字進行查找

如果覺得界面刷新太快,看不清楚關注的信息,可以點擊底部的Pause菜單

sysdig的特點:

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

其缺點是sysdig顯示的是實時數據,看不到變化和趨勢。而且是命令行操作方式,需要ssh到host上執行,不是太方便

總結
這些示例僅僅是展示了 Sysdig 能力的冰山一角,在目前的其他系統監控類工具中,筆者還沒有看到像 Sysdig 這樣功能如此強大、而又對容器支持這樣好的。所以,對於經常使用服務器特別是 Docker 容器作爲產品運行方式的用戶,這是一款值得使用的系統工具。

三、Docker監控方案之Weave Scope

Weave Scope 的最大特點是會自動生成一張 Docker 容器地圖,讓我們能夠直觀地理解、監控和控制容器。千言萬語不及一張圖,先感受一下。
Docker的監控(簡單部署Sysdig和Weave Scope)

[root@docker01 ~]# docker pull scope
//下載scope鏡像

執行如下腳本安裝運行Weave Scope

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

Docker的監控(簡單部署Sysdig和Weave Scope)

瀏覽器訪問http://192.168.1.11:4040/

Docker的監控(簡單部署Sysdig和Weave Scope)

然後就可以更好的監控,管理docker中的容器了

開啓第docker02,加入docker01監控項

docker01

刪除weavescope容器

[root@docker01 ~]# docker stop weavescope 
weavescope
[root@docker01 ~]# docker rm weavescope 
weavescope

docker02

[root@docker01 ~]# docker pull scope
//下載scope鏡像
[root@docker01 ~]# curl -L git.io/scope -o /usr/local/bin/scope
[root@docker01 ~]# chmod +x /usr/local/bin/scope
[root@docker01 ~]# scope launch

docker01

[root@docker01 ~]# scope launch 192.168.1.11 192.168.1.13 

docker02

[root@docker02 ~]# scope launch 192.168.1.13 192.168.1.11

瀏覽器訪問http://192.168.1.11:4040/

Docker的監控(簡單部署Sysdig和Weave Scope)

瀏覽器訪問http://192.168.1.13:4040/也是可以的

Docker的監控(簡單部署Sysdig和Weave Scope)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章