天天看點

Docker 容器監控知多少?

前言

在企業中,通常業務是不允許随意停止的,否則将給企業帶來巨大的經濟損失。

運維工程師要保證業務正常運作,就必須利用工具時刻監控業務的運作狀态,容器中的業務也不例外。

除了容器自身的監控指令外,還有一些針對容器的動态特征而開發的第三方監控工具。

本章将對容器監控及其相關内容進行詳解。

Docker 監控指令

在容器中,通常可以通過執行指令或利用第三方工具,擷取目前容器中的資料并将資料呈現給使用者。

安裝完成的 Docker 自帶一些用于監控容器的子指令,這是 Docker 開發者為使用者提供的容器監控方式。

docker ps 指令

docker ps 指令是之前中講過的指令,用來檢視容器狀态,示例代碼如下:

Docker 容器監控知多少?

另外,通過 docker container ls指令也可以達到相同的效果,示例代碼如下:

Docker 容器監控知多少?

注意,若是 docker container ls指令執行失敗,更新 Docker 版本即可。

docker top 指令

docker top 指令用于檢視容器中的程序,示例代碼如下:

Docker 容器監控知多少?

以上示例通過 docker top 指令添加容器 ID 号檢視到了容器内程序。

除此之外,還可以在指令中添加容器名稱,達到相同的效果,示例代碼如下:

Docker 容器監控知多少?

在 docker top 指令中添加參數即可顯示特定的程序資訊,此處以 -u 參數為例,示例代碼如下:

Docker 容器監控知多少?

以上示例通過給 docker top 指令添加 -u 參數,将 sysdig 容器的程序資訊以使用者為主的格式顯示出來。

docker stats 指令

docker stats 指令用于查詢容器的各項資源的消耗情況,示例代碼如下:

Docker 容器監控知多少?

以上示例執行了 docker stats 指令,在終端通過一個動态清單顯示出各個容器的資源使用情況,如 cpu 使用率、記憶體、容器網絡等資訊。

在沒有限制容器記憶體的情況下,此處将會顯示主控端的記憶體。

此處的動态清單有一項明顯的不足,就是隻能顯示容器 ID 号,不顯示容器名稱。

但隻要在指令中添加容器名稱,即可檢視指定容器的資訊,示例代碼如下:

Docker 容器監控知多少?

Docker 自帶的容器監控指令能夠靈活捕捉容器的實時資訊,且使用友善。

但它們無法反映容器資源占用的趨勢,且隻能顯示有限的資料。

Sysdig

Sysdig 是一款指令行監控工具,因其輕量級的特點深受廣大使用者的喜愛。

Sysdig 就像放大鏡,使使用者可以更清晰地看到主控端與容器的各項行為。

它相當于多種 Linux 監控工具的合集,如 strace、htop、lsof 等,将這些工具的功能及查詢結果整合到同一個界面中,供使用者操作。

Sysdig 為在 Docker Hub 中提供了容器鏡像,使用者可以将 Sysdig 以容器的形式運作,示例代碼如下:

Docker 容器監控知多少?

以上示例中,Sysdig 容器以挂載主控端目錄的方式收集系統資訊,并給予其足夠的系統權限。

注意,該指令中必須使用絕對路徑,否則會在執行時出錯。

容器啟動後将直接進入容器終端,若通過 Ctrl+P+Q 組合鍵退出容器或者容器在背景運作,通過 exec 指令即可進入 Sysdig 容器,示例代碼如下:

Docker 容器監控知多少?

在 Sysdig 容器中,通過以下指令啟動 Sysdig 監控:

Docker 容器監控知多少?

執行成功之後,将顯示 Sysdig 功能界面,如圖所示。

Docker 容器監控知多少?

功能界面中不僅有各項資源的使用資訊,下方還有各類選項,使用者可以根據不同要求從不同角度去監控不同類型的資源。

按 F2 鍵或者單擊 Views 選項,進入監控選項清單,如圖所示。

Docker 容器監控知多少?

在該界面中,左邊列出了 Sysdig 的各個監控項,右邊是關于監控項的說明。

通過鍵盤方向鍵即可移動界面中的光标,進而切換監控項。

下面将光标移動到 Containers 項,按Enter鍵或者輕按兩下該選項,進入容器監控界面,如圖所示。

Docker 容器監控知多少?

若是使用者覺得圖中的内容太過繁瑣,或者難以了解,可以按 F7 鍵,進入資料說明界面。

其中有對各項資料的解釋,能幫助使用者更快掌握 Sysdig 的使用方法,如圖所示。

Docker 容器監控知多少?

進入該界面之後,按任意鍵即可退出。

另外,在監控界面中還可以指定按照某一項資料進行排序,單擊清單中某一項資料的表頭即可。

此處以記憶體為例,按照占用記憶體排序的監控清單,如圖所示。

Docker 容器監控知多少?

若要檢視單個容器内部資訊,将光标移動到該容器資訊上,按Enter鍵即可,如圖所示。

Docker 容器監控知多少?

再移動光标到指定資訊,按Enter鍵還可以檢視容器程序中的線程資訊,如圖所示。

Docker 容器監控知多少?

若要傳回上一級,在鍵盤上按倒退鍵即可。

為友善使用者管理,Sysdig 還支援搜尋功能,通過 Ctrl+F 組合鍵即可啟動該功能,再輸入關鍵字即可查詢。此處關鍵字以 usr 為例,如圖所示。

Docker 容器監控知多少?

如果在操作過程中遇到問題,可以按 F1 鍵或者單擊某選項,進入幫助文檔。

幫助文檔詳細介紹了 Sysdig 的操作方式,供使用者學習。

若動态清單變化太快,導緻使用者無法準确檢視到資訊,可以按 P 鍵将清單暫停。

Sysdig 為使用者提供了較為全面的監控視角,但其本質是指令行工具,缺乏更具直覺性的監控角度。

Weave Scope

Weave Scope 為使用者提供了更直覺的監控視角,它将整個監控以圖形界面的形式呈現出來。

安裝 Weave Scope

首先,下載下傳 Weave Scope 的二進制安裝包到指定的路徑下,示例代碼如下:

Docker 容器監控知多少?

Weave Scope 安裝包的本質是一個腳本,是以需要賦予其執行權限,示例代碼如下:

Docker 容器監控知多少?

然後,通過指令執行該腳本,示例代碼如下:

Docker 容器監控知多少?

此時,Weave Scope 監控已經開啟,通過浏覽器通路系統提示中的 http://192.168.77.128:4040/ 即可進入監控界面。

在進入界面之前先檢視容器狀态,示例代碼如下:

Docker 容器監控知多少?

從以上示例中可以看到,主控端中增加了一個被命名為 weavescope 的新容器,這說明 Weave Scope 以容器的方式在主控端中運作。

下面根據提示進入 Weave Scope 界面,如圖所示。

圖中,主控端中的所有容器都以圖形的形式呈現出來,更加便于使用者管理。

監控容器

在 Weave Scope 界面中,主控端上的容器被分為多個種類,預設不顯示 Weave Scope 本身的容器。

若要檢視所有容器,就需要在界面左下角的選項中進行操作,如圖所示。

在左下方單擊 All 選項,即可檢視主控端中所有運作中的容器,如圖所示。

Docker 容器監控知多少?

若要檢視容器的資源占用情況,需要在界面上方選項中進行操作,如圖所示。

Docker 容器監控知多少?

在上方單擊 CPU 選項,即可顯示界面中容器的 CPU 使用情況,如圖所示。

Docker 容器監控知多少?

單擊 CPU 選項之後,CPU 使用情況将會以液位高度的形式在容器圖示上顯示。

此時,将滑鼠指針移動到容器圖示之上,即可顯示具體資料,如圖所示。

Docker 容器監控知多少?

若要檢視某一容器的詳細資訊,單擊該容器圖示即可,如圖所示。

Docker 容器監控知多少?

其中,容器的詳細資訊包括以下各項:

  • Status:CPU 與記憶體的實時狀态曲線圖。
  • Info:鏡像、鏡像标簽、指令等資訊。
  • Processes:該容器中實時運作的程序資訊。
  • Docker labels:維護人員或容器的啟動指令等資訊。
  • Image:該容器的鏡像資訊。

容器詳細資訊界面中,有一行可對該容器直接進行操作的選項,如圖所示。

Docker 容器監控知多少?

圖中的選項從左到右分别表示:

  • 通過 docker attach 指令進入容器終端;
  • 通過 docker exec 指令進入容器終端;
  • 通過 docker restart 指令重新啟動容器;
  • 通過 docker pause 指令暫停容器;
  • 通過 docker stop 指令終止容器。

有了這些選項,使用者就不需要在終端中輸入指令,直接單擊選項即可對容器進行操作。

若需要執行這些選項之外的操作,可通過選項進入容器終端完成。

監控主控端

Weave Scope 為使用者提供廣闊的監控視角,除了監控容器,還可以對主控端進行監控。

單擊界面上方的 Hosts 選項,即可檢視主控端,如圖所示。

與容器操作相同,單擊主控端圖示即可檢視其詳細資訊,如圖所示。

Docker 容器監控知多少?

與容器相比,主控端的 Staus 項中增加了負載資訊。

詳細資訊還包含了主控端中的容器資訊,單擊容器名稱即可檢視容器的詳細資訊。

主控端的資訊中隻有一個供使用者對其進行操作的選項,單擊即可進入主控端終端,如圖所示。

Docker 容器監控知多少?

多主控端監控

在企業生産環境中,通常需要使用多台主控端部署容器業務,是以容器監控也需要同時監控多台主控端。

而 Weave Scope 恰好擁有多主控端監控的功能,下面通過示例來示範該功能的使用方式。

首先,準備兩台安裝了 Weave Scope 的伺服器,并分别在啟動指令中添加兩個伺服器的 IP 位址進行啟動,示例代碼如下:

Docker 容器監控知多少?

根據兩台主控端中啟動指令的執行結果,無論是通路 http://192.168.77.128:4040/ 還是 http://192.168.77.130:4040/,都可以監控到兩台主控端,如圖所示。

Docker 容器監控知多少?

單擊界面上方的 Containers 選項,檢視所有主控端中的容器,如圖所示。

Docker 容器監控知多少?

為了便于使用者分辨,Weave Scope 在每個容器圖示下的容器名稱後都會标注該容器所屬主控端的主機名。

在生産環境中部署大量容器,需要對某一容器進行操作時,可以使用 Weave Scope 界面左上角的搜尋功能,對該容器進行搜尋。

此處以關鍵字 "reg" 為例,搜尋結果如圖所示。

Docker 容器監控知多少?

另外,Weave Scope 還支援邏輯條件搜尋。

例如,搜尋 CPU 占用率大于 1% 的容器,在搜尋欄中輸入 "cpu>1 即可,如圖所示。

Docker 容器監控知多少?

界面的右下角有四個選項,從左到右前三個是調試界面顯示的選項,最後一個是 Weave Scope 的幫助選項,如圖所示。

Docker 容器監控知多少?

單擊幫助選項,即可檢視 Weave Scope 的幫助文檔,如圖所示。

Docker 容器監控知多少?

總結

本章講解了 Docker 自帶的監控指令,以及一些第三方監控軟體的安裝與使用。

其中,Sysdig 是一款優秀的指令行監控工具;

Weave Scope 不僅操作簡單,還為使用者提供了更為直覺的圖形界面。

希望大家通過本篇文章的學習能夠熟練掌握 Docker 容器的監控方式,以保證容器中業務的正常運作。

原文:https://mp.weixin.qq.com/s/lq9Y7cMSsp8lKRGkhCIvjw