1. 程式人生 > >Docker應用的視覺化監控管理

Docker應用的視覺化監控管理

本文介紹一個開源專案Weave Scope,專案地址是https://github.com/weaveworks/scope。Weave Scope這個專案會自動生成容器之間的關係圖,方便理解容器之間的關係,也方便監控容器化和微服務化的應用。

首先,我們在一臺機器上面安裝docker,然後安裝Weave Scope專案。

sudo wget -O /usr/local/bin/scope https://git.io/scope
sudo chmod a+x /usr/local/bin/scope
sudo scope launch

上面的指令碼會從Docker Hub上面下載最新的Scope映象,然後我們在web瀏覽器中輸入http://ip:4040

,我們就會看到下面所示頁面。

visualization01

在頁面中可以按照程序檢視、容器檢視和主機檢視進行呈現,並且可以進行查詢。

如果選擇的是容器檢視,那麼在左下角可以根據容器屬性進行過濾,可以只顯示系統容器,或者只顯示應用容器,或者同時顯示系統容器和應用容器,在左下角還可以根據容器狀態進行過濾,可以只顯示停止狀態的容器,或者只顯示執行狀態的容器,或者同時顯示停止狀態和執行狀態的容器。

下圖是在容器檢視中展現停止狀態的應用容器:

visualization02

在容器檢視可以按照DNS 名稱和映象進行歸類展現,下圖是對上圖中停止狀態的應用容器按照映象進行歸類展現:

visualization03

下圖是在容器檢視上展現執行狀態的應用容器,可以看到機器38dad64f上面存在兩個執行狀態的應用容器,分別是wordpress-db和wordpress-app,這兩個容器的作用會在下面詳細介紹:

visualization04

可以在左下角選擇監控CPU使用率或者記憶體使用率:visualization05

下圖是選擇監控CPU使用率後的介面,選擇wordpress-db容器後,會顯示CPU使用率:

visualization06

下圖是選擇監控記憶體使用率後的介面,選擇wordpress-db容器後,會顯示記憶體使用率:

visualization07

當用滑鼠左鍵點選wordpress-db容器後,會顯示這個容器的詳細資訊,如下圖所示:

visualization08

在容器詳細資訊頁面,可以點選“docker.io/mysql”檢視映象詳細資訊:

visualization09

也可以點選“38dad64f”檢視主機詳細資訊:

visualization10

當在主介面中選擇主機檢視,那麼可以對主機進行圖形展現,如下圖所示:

visualization11

在主機檢視中,可以在左下角選擇按CPU使用率、負載、記憶體使用率進行監控:visualization12

在主機檢視中,也可以用滑鼠左鍵點選主機“38dad64f”,顯示主機“38dad64f”的詳細資訊。

在程序檢視中,可以展現主機上scope程序的資訊:

visualization13

在程序檢視中,可以在左下角選擇按CPU使用率、記憶體使用率、開啟檔案數進行監控:visualization14

如果選擇按照開啟檔案數進行監控,那麼如下圖所示,可以看到scope-probe程序打開了17個檔案,scope-app程序打開了9個檔案:

visualization15

用滑鼠左鍵點選scope-probe程序,可以看到這個程序的詳細資訊,如下圖所示:

visualization16

在主介面右下角,可以對scope監控進行簡單的設定:

  1. 可以暫停監控佈局變化,暫停後頁面就不會實時進行變化,這樣頁面中的圖形元素就可以保持不變;
  2. 可以強制重繪監控佈局,這樣就可以不用等下一個重繪時間點;
  3. 可以將監控內容儲存成SVG格式檔案;
  4. 可以將監控資料儲存成JSON格式檔案;
  5. 可以將展現圖形切換成高對比樣式,如下圖所示:

visualization17

Weave Scope這個專案還會自動呈現容器之間的關係,方便監控容器化和微服務化的應用。在上面的例子中,可以看到機器38dad64f上面存在兩個執行狀態的應用容器,分別是wordpress-db和wordpress-app,其中wordpress-db是一個mysql應用容器,wordpress-app是一個wordpress應用容器,服務埠是10080,wordpress應用容器需要使用mysql應用容器,現在已經安裝好了wordpress-app容器,但是對wordpress還沒有進行安裝配置,現在容器檢視中介面如下:

visualization18

當在瀏覽器中輸入http://ip:10080,並對wordpress進行安裝配置時,容器檢視中介面如下,可以看到scope監控到有outbound連線請求,促使wordpress-app進行inbound連線:

visualization19

在安裝配置好wordpress後,進入wordpress登入介面,這時候在scope的程序檢視中可以看到多了一個apache程序,這個程序就是提供wordpress的web服務:

visualization20

我們登入到wordpress中,對wordpress進行升級,wordpress升級介面如下:

visualization21

此時我們在scope容器檢視中檢視,可以看到wordpress-app同wordpress-db兩個容器之間有通訊,這是因為wordpress升級過程中需要操作mysql資料庫,也就是說需要同wordpress-db進行通訊。

visualization22

上面介紹的是在主機上安裝scope的例子,scope還可以安裝在kubernetes上,還可以安裝在Amazon ECS上,還可以安裝在DC/OS上。

綜上所述,一旦我們將應用容器化之後,傳統的應用監控可能不起作用了,需要我們採用新的方式來監控應用、監控程序、監控容器,通過Weave Scope這個專案,可以方便的監控容器之間的關係,也方便監控容器化和微服務化的應用,幫助我們瞭解應用和容器的執行狀況。