本篇已加入《.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》
使用Google出品的cAdvisor監控Docker容器》
,《