1. 程式人生 > >你必須知道的容器監控 (2) cAdvisor

你必須知道的容器監控 (2) cAdvisor

本篇已加入《.NET Core on K8S學習實踐系列文章索引》,可以點選檢視更多容器化技術相關係列文章。上一篇我們瞭解了docker自帶的監控子命令以及開源監控工具Weave Scope,這一篇我們來了解一下Google開發的容器監控工具cAdvisor。cAdvisor能夠較好地展示Host和容器兩個層次的監控資料,並且能夠展示歷史變化資料。

# 實驗環境:阿里雲ECS主機(兩臺),CentOS 7.4

一、cAdvisor簡介

   為了解決容器的監控問題,Google開發了一款容器監控工具cAdvisor(Container Advisor),它為容器使用者提供了對其執行容器的資源使用和效能特徵的直觀展示。 它是一個執行守護程式,用於收集,聚合,處理和匯出有關正在執行的容器的資訊。

  cAdvisor可以對節點機器上的資源及容器進行實時監控和效能資料採集,包括CPU使用情況、記憶體使用情況、網路吞吐量及檔案系統使用情況。

  cAdvisor使用go語言開發,如果想了解更多請訪問其官方github:https://github.com/google/cadvisor

二、安裝cAdvisor

  cAdvisor 有兩種方法來執行,一種是以二進位制可執行檔案安裝執行,另一種是以 Docker 容器執行。這裡我們主要介紹第二種以Docker方式安裝執行。

  我們可以通過以下命令來在實驗環境的雲伺服器中執行cAdvisor容器:

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

  執行之後你會看到以下提示資訊:

  

   看到以上資訊代表我們以docker方式執行成功,我們可以通過 http://[Your Host IP]:8080(預設是8080埠)來訪問cAdvisor。看到以下介面,代表我們的安裝工作完成。

  

三、使用cAdvisor

3.1 監控容器

  cAdvisor提供了對Host和容器的監控,單擊“Docker Containers”連結:

  

   我們即可進入容器監控列表

   

   單擊其中某個容器例如exceptionless_api_1,即可進入該容器例項的監控頁面(前方長圖,注意流量):

   

   我們可以清楚地看到:CPU、記憶體、網路、檔案系統的動態使用情況。

3.2 監控Host

  除了監控容器之外,cAdvisor也提供了對Host的監控。退出Docker Containers,我們在首頁就可以看到如下圖所示的Host動態效能資料:

  

  同樣,我們也能清楚地看到CPU、記憶體、網路、檔案系統等資源的動態使用情況以及歷史資料的變化。

四、小結

  本文簡單介紹了Google開發的容器監控工具cAdvisor的基本安裝與使用,總結下來cAdvisor可以幫助展示Host和容器兩方面的監控資料,還可以動態展示歷史資料的變化。但是,cAdvisor的缺點也非常明顯,那就是它的操作介面比較簡陋,而且需要多個頁面來回跳轉,其易用性甚至還不如Weave Scope。更為重要的是,它不能監控多個Host,而Weave Scope至少還可以監控多個Host。那麼,為何我們還要學習它呢?因為cAdvisor有一個亮點之處就在於它可以將監控資料匯出給第三方工具,而這個第三方工具就是我們下一篇將要學習的Prometheus,Prometheus會對這些監控資料做進一步加工處理。

  因此,我們後續的監控結構是:Prometheus + Node Exporter & cAdvisor + Grafana,敬請期待。

參考資料

Cloud Man,《每天5分鐘玩轉Docker容器技術》

二二向箔,《容器監控實踐-cAdvisor》

Ein Verne,《使用Google出品的cAdvisor監控Docker容器》

 

作者:周旭龍

出處:https://edisonchou.cnblogs.com

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結。