摘要:在中包含大量的了相關的信息參考原生監控文章的收集器更多源碼參考文章總結優缺點優點谷歌開源產品,監控指標齊全,部署方便,而且有官方的鏡像。
概述
為了解決docker stats的問題(存儲、展示),谷歌開源的cadvisor誕生了,cadvisor不僅可以搜集一臺機器上所有運行的容器信息,還提供基礎查詢界面和http接口,方便其他組件如Prometheus進行數據抓取,或者cadvisor + influxdb + grafna搭配使用。
cAdvisor可以對節點機器上的資源及容器進行實時監控和性能數據采集,包括CPU使用情況、內存使用情況、網絡吞吐量及文件系統使用情況
Cadvisor使用Go語言開發,利用Linux的cgroups獲取容器的資源使用信息,在K8S中集成在Kubelet里作為默認啟動項,官方標配。
安裝1.使用二進制部署
下載二進制:https://github.com/google/cadvisor/releases/latest 本地運行:./cadvisor -port=8080 &>>/var/log/cadvisor.log
2.使用docker部署
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
注意: 在Ret Hat,CentOS, Fedora 等發行版上需要傳遞如下參數,因為 SELinux 加強了安全策略: --privileged=true 啟動后訪問:http://127.0.0.1:8080查看頁面,/metric查看指標
* 常見指標:http://yjph83.iteye.com/blog/2394091 * 指標分析:https://luoji.live/cadvisor/cadvisor-source-code-metrics-20160927.html`
3.kubernetes中使用
* Daemonset部署: https://github.com/google/cadvisor/tree/master/deploy/kubernetes * kubelet自帶cadvisor監控所有節點,可以設置--cadvisor-port=8080指定端口(默認為4194) * kubernetes 在2015-03-10 這個提交(Run cAdvisor inside the Kubelet. Victor Marmol 2015/3/10 13:39)中cAdvisor開始集成在kubelet中,目前的1.6及以后均存在
注意:
從 v1.7 開始,Kubelet metrics API 不再包含 cadvisor metrics,而是提供了一個獨立的 API 接口: * Kubelet metrics: http://127.0.0.1:8001/api/v1/proxy/nodes/常用搭配 1.cAdvisor+Heapster+influxdb/metrics * Cadvisor metrics: http://127.0.0.1:8001/api/v1/proxy/nodes/ /metrics/cadvisor cadvisor 監聽的端口將在 v1.12 中刪除,建議所有外部工具使用 Kubelet Metrics API 替代。
Heapster:在k8s集群中獲取metrics和事件數據,寫入InfluxDB,heapster收集的數據比cadvisor多,卻全,而且存儲在influxdb的也少。
Heapster將每個Node上的cAdvisor的數據進行匯總,然后導到InfluxDB。 Heapster的前提是使用cAdvisor采集每個node上主機和容器資源的使用情況, 再將所有node上的數據進行聚合。 這樣不僅可以看到Kubernetes集群的資源情況, 還可以分別查看每個node/namespace及每個node/namespace下pod的資源情況。 可以從cluster,node,pod的各個層面提供詳細的資源使用情況。
InfluxDB:時序數據庫,提供數據的存儲,存儲在指定的目錄下。
Grafana:提供了WEB控制臺,自定義查詢指標,從InfluxDB查詢數據并展示。
cAdvisor+Prometheus+Grafana訪問http://localhost:8080/metrics,可以拿到cAdvisor暴露給 Prometheus的數據
其他內容參考后續的prometheus文章
深入解析cAdvisor結構圖
cadvisor地址:https://github.com/google/cad...
主函數邏輯:(cadvisor/cadvisor.go)
通過new出來的memoryStorage以及sysfs實例,創建一個manager實例,manager的interface中定義了許多用于獲取容器和machine信息的函數
核心函數:
生成manager實例的時候,還需要傳遞兩個額外的參數,分別是
maxHousekeepingInterval:存在內存的時間,默認60s
allowDynamicHousekeeping:是否允許動態配置housekeeping,也就是下一次開始搜集容器信息的時間,默認true
因為需要暴露服務,所以在handler文件中,將上面生成的containerManager注冊進去(cadvisor/http/handler.go),之后就是啟動manager,運行其Start方法,開始搜集信息,存儲信息的循環操作。
以memory采集為例:
具體的信息還是通過runc/libcontainer獲得,libcontainer是對cgroup的封裝。在/sys/fs/cgroup/memory中包含大量的了memory相關的信息(參考docker原生監控文章)
Prometheus的收集器(cadvisor/metrics/prometheus.go)
更多源碼參考文章:https://luoji.live/categories...
總結優缺點:
優點:谷歌開源產品,監控指標齊全,部署方便,而且有官方的docker鏡像。
缺點:是集成度不高,默認只在本地保存1分鐘數據,但可以集成InfluxDB等存儲
備注:
愛奇藝參照cadvisor開發的dadvisor,數據寫入graphite, 等同于cadvisor+influxdb,但dadvisor并沒有開源
本文為容器監控實踐系列文章,完整內容見:container-monitor-book
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27660.html
摘要:在中包含大量的了相關的信息參考原生監控文章的收集器更多源碼參考文章總結優缺點優點谷歌開源產品,監控指標齊全,部署方便,而且有官方的鏡像。 概述 為了解決docker stats的問題(存儲、展示),谷歌開源的cadvisor誕生了,cadvisor不僅可以搜集一臺機器上所有運行的容器信息,還提供基礎查詢界面和http接口,方便其他組件如Prometheus進行數據抓取,或者cadvis...
showImg(https://segmentfault.com/img/remote/1460000014421849); 概述 一個宿主機上可以運行多個容器化應用,容器化應用運行于宿主機上,我們需要知道該容器的運行情況,包括 CPU使用率、內存占用、網絡狀況以及磁盤空間等等一系列信息,而且這些信息隨時間變化,我們稱其為時序數據,本文將實操 如何搭建一個可視化的監控中心 來收集這些承載著具體應...
摘要:還可以把數據導入到第三方工具展示或使用場景共同組成了一個流行的監控解決方案原生的監控圖表信息來自在中也用到了,將作為,向其獲取,作為水平擴縮容的監控依據監控指標流程首先從獲取集群中所有的信息。 概述 該項目將被廢棄(RETIRED) Heapster是Kubernetes旗下的一個項目,Heapster是一個收集者,并不是采集 1.Heapster可以收集Node節點上的cAdvis...
摘要:還可以把數據導入到第三方工具展示或使用場景共同組成了一個流行的監控解決方案原生的監控圖表信息來自在中也用到了,將作為,向其獲取,作為水平擴縮容的監控依據監控指標流程首先從獲取集群中所有的信息。 概述 該項目將被廢棄(RETIRED) Heapster是Kubernetes旗下的一個項目,Heapster是一個收集者,并不是采集 1.Heapster可以收集Node節點上的cAdvis...
摘要:是一個時序數據庫,專門用于存儲時序相關數據,很適合存儲的數據。容器監控數據存儲配置和運行是一個開源的分布式時序數據庫,使用語言開發。的特色功能作為時序數據庫,相比傳統數據庫它有很多特色功能,比如獨有的一些特色函數和連續查詢功能。 本文已獲得原作者__七把刀__授權。 隨著線上服務的全面 docker 化,對 docker 容器的監控就很重要了。SA 的監控系統是物理機的監控,在一個物理...
閱讀 1207·2021-09-03 10:44
閱讀 604·2019-08-30 13:13
閱讀 2796·2019-08-30 13:11
閱讀 1967·2019-08-30 12:59
閱讀 1034·2019-08-29 15:32
閱讀 1595·2019-08-29 15:25
閱讀 987·2019-08-29 12:24
閱讀 1277·2019-08-27 10:58