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