您現(xiàn)在的位置:首頁 > 綜合 > 特別關(guān)注 > 正文

當前資訊!【云原生 ? Docker】cAdvisor+Prometheus+Grafana 10分鐘搞定Docker容器監(jiān)控平臺

時間:2023-04-24 13:24:58    來源:騰訊云    

10分鐘搞定Docker容器監(jiān)控平臺

cAdvisor(Container Advisor)Google開源的一個容器監(jiān)控工具,可用于對容器資源的使用情況和性能進行監(jiān)控。用于收集、聚合、處理和導(dǎo)出正在運行容器的有關(guān)信息。具體來說,該組件對每個容器都會記錄其資源隔離參數(shù)、歷史資源使用情況、完整歷史資源使用情況的直方圖和網(wǎng)絡(luò)統(tǒng)計信息。cAdvisor本身就對 Docker容器支持,并且還對其它類型的容器盡可能的提供支持,力求兼容與適配所有類型的容器。

由以上介紹我們可以知道,cAdvisor是用于監(jiān)控容器引擎的,由于其監(jiān)控的實用性,Kubernetes已經(jīng)默認將其與 Kubelet融合作為容器監(jiān)控指標的默認工具,所以,對于云原生集群直接使用 Kubelet組件提供的指標采集地址即可。

cAdvisor部署

1、使用以下命令安裝啟動cAdvisor組件


(資料圖片僅供參考)

docker run \  --volume=/:/rootfs:ro \  --volume=/var/run:/var/run:ro \  --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 \  --privileged \  --device=/dev/kmsg \  google/cadvisor:latest

2、此時,cAdvisor組件已經(jīng)啟動,我們可以使用瀏覽器訪問 http://自己IP地址:8080訪問到cAdvisor組件Web UI

3、而在多主機的情況下,在所有節(jié)點上運行一個cAdvisor再通過各自的Web UI查看監(jiān)控信息顯然不太方便,同時cAdvisor默認只保存2分鐘的監(jiān)控數(shù)據(jù)。好消息是cAdvisor已經(jīng)內(nèi)置了對Prometheus的支持。訪問http://自己的IP地址:8080/metrics即可獲取到標準的Prometheus監(jiān)控樣本輸出:

4、下面表格中列舉了一些cAdvisor中獲取到的典型監(jiān)控指標:

指標名稱

類型

含義

container_cpu_load_average_10s

gauge

過去10秒容器CPU的平均負載

container_cpu_usage_seconds_total

counter

容器在每個CPU內(nèi)核上的累積占用時間 (單位:秒)

container_cpu_system_seconds_total

counter

System CPU累積占用時間(單位:秒)

container_cpu_user_seconds_total

counter

User CPU累積占用時間(單位:秒)

container_fs_usage_bytes

gauge

容器中文件系統(tǒng)的使用量(單位:字節(jié))

container_fs_limit_bytes

gauge

容器可以使用的文件系統(tǒng)總量(單位:字節(jié))

container_fs_reads_bytes_total

counter

容器累積讀取數(shù)據(jù)的總量(單位:字節(jié))

container_fs_writes_bytes_total

counter

容器累積寫入數(shù)據(jù)的總量(單位:字節(jié))

container_memory_max_usage_bytes

gauge

容器的最大內(nèi)存使用量(單位:字節(jié))

container_memory_usage_bytes

gauge

容器當前的內(nèi)存使用量(單位:字節(jié)

container_spec_memory_limit_bytes

gauge

容器的內(nèi)存使用量限制

machine_memory_bytes

gauge

當前主機的內(nèi)存總量

container_network_receive_bytes_total

counter

容器網(wǎng)絡(luò)累積接收數(shù)據(jù)總量(單位:字節(jié))

container_network_transmit_bytes_total

counter

容器網(wǎng)絡(luò)累積傳輸數(shù)據(jù)總量(單位:字節(jié))

Prometheus部署

1、創(chuàng)建prometheus存儲數(shù)據(jù)外掛目錄,避免容器重啟丟失:

mkdir -p /disk/docker-monitor/prometheus/datachmod 777 /disk/docker-monitor/prometheus/data

2、prometheus配置文件外掛出來,方便修改,vi /disk/docker-monitor/prometheus/prometheus.yml

global:  scrape_interval: 15s  evaluation_interval: 15s alerting:  alertmanagers:    - static_configs:        - targets:          # - alertmanager:9093rule_files:  - rule/record/*.ymlscrape_configs:  - job_name: "prometheus"    static_configs:      - targets: ["localhost:9090"]  - job_name: "cadvisor"    static_configs:      - targets: ["124.222.45.207:8080"]

?job_name: "prometheus"配置抓取Prometheus自身相關(guān)指標;job_name: "cadvisor"配置抓取之前配置的cAdvisor組件指標。?

3、Docker部署Prometheus

docker run -d -p 9090:9090 --name prometheus \    -v /disk/docker-monitor/prometheus/conf:/opt/bitnami/prometheus/conf \    -v /disk/docker-monitor/prometheus/data:/opt/bitnami/prometheus/data \    bitnami/prometheus:2.42.0 \    --web.enable-lifecycle --web.enable-admin-api\    --config.file=/opt/bitnami/prometheus/conf/prometheus.yml\    --storage.tsdb.path=/opt/bitnami/prometheus/data

?--web.enable-lifecycle --web.enable-admin-api提供rest api接口方式管理prometheus,比如配置熱加載:curl -XPOST http://localhost:9090/-/reload。注意:這里將prometheus配置文件和存儲目錄外掛出來,避免容器重啟后數(shù)據(jù)丟失。?

4、Prometheus啟動完成后,瀏覽器訪問:

訪問Status -> Targets頁面,發(fā)現(xiàn)配置的兩個抓取Job已經(jīng)顯示,并且State是綠色UP,則接入成功。

5、當能夠正常采集到cAdvisor的樣本數(shù)據(jù)后,可以通過以下表達式計算容器的CPU使用率sum(irate(container_cpu_usage_seconds_total{image!=""}[1m])) without (cpu)

Grafana部署

1、部署Grafana

docker run -d --name=grafana -p 3000:3000 -v grafana:/var/lib/grafana grafana/grafana

?/var/lib/grafana路徑外掛出來,該目錄存儲Grafana插件、數(shù)據(jù)信息,避免Docker容器重啟數(shù)據(jù)丟失。?

2、訪問:http://自己的IP:3000/login,輸入賬號admin/admin

3、創(chuàng)建Prometheus類型數(shù)據(jù)源,指向剛才搭建的Prometheus

4、導(dǎo)入Docker容器監(jiān)控面板,這里使用11277

5、監(jiān)控面板就可以看到Docker容器運行情況,如下圖,當前運行中容器有4個,總占用內(nèi)存319MB,總CPU使用率大概1.84%,并以曲線方式展示每個容器的CPU使用率、內(nèi)存使用率、網(wǎng)絡(luò)IO和磁盤IO等。

關(guān)鍵詞:

凡本網(wǎng)注明“XXX(非中國微山網(wǎng))提供”的作品,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點和其真實性負責。

特別關(guān)注