全球焦點!【云原生 ? Docker】cAdvisor+Prometheus+Grafana 10分鐘搞定Docker容器監(jiān)控平臺
10分鐘搞定Docker容器監(jiān)控平臺
cAdvisor(Container Advisor)
是 Google
開源的一個容器監(jiān)控工具,可用于對容器資源的使用情況和性能進行監(jiān)控。用于收集、聚合、處理和導出正在運行容器的有關信息。具體來說,該組件對每個容器都會記錄其資源隔離參數(shù)、歷史資源使用情況、完整歷史資源使用情況的直方圖和網(wǎng)絡統(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)內置了對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內核上的累積占用時間 (單位:秒) |
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 | 容器的最大內存使用量(單位:字節(jié)) |
container_memory_usage_bytes | gauge | 容器當前的內存使用量(單位:字節(jié) |
container_spec_memory_limit_bytes | gauge | 容器的內存使用量限制 |
machine_memory_bytes | gauge | 當前主機的內存總量 |
container_network_receive_bytes_total | counter | 容器網(wǎng)絡累積接收數(shù)據(jù)總量(單位:字節(jié)) |
container_network_transmit_bytes_total | counter | 容器網(wǎng)絡累積傳輸數(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自身相關指標;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、導入Docker
容器監(jiān)控面板,這里使用11277
:
5、監(jiān)控面板就可以看到Docker
容器運行情況,如下圖,當前運行中容器有4個,總占用內存319MB
,總CPU使用率
大概1.84%,并以曲線方式展示每個容器的CPU使用率
、內存使用率、網(wǎng)絡IO和磁盤IO等。
標簽:
- 全球焦點!【云原生 ? Docker】c
- python-異常處理和錯誤調試-異步IO
- 使用 Spring Cloud Bus 和 Spr
- 保存象棋棋盤信息,需要多少比特?
- 配債不買有損失嗎?配債需要手動買
- 創(chuàng)業(yè)板中簽后新股最佳賣出時間?創(chuàng)
- 股票被停牌股民怎么辦? 長期停
- 股票換手率高股價下跌是怎么回事?
- 天天通訊!讓“五個一百”在時代洪
- 今年一季度全國地表水水質提升 天
- 最新資訊:我國首個大型頁巖氣田“
- 記者手記:讀懂農民籃球賽火爆背后
- 新三板和主板上市的區(qū)別?掛牌新三
- 股票退市后持倉還在嗎?買的股票退
- 股票休市前多久不可以交易?股市休
- 今日聚焦!大國基理|重慶潼南:“雙
- 尾盤急跌是什么意思?股票尾盤急跌
- 怎樣查看股票賬戶手續(xù)費?股票手續(xù)費
- 股票為啥買不進來?股票買的人多就漲
- 基金買入待確認可以撤銷嗎?基金買入
- 青海省發(fā)布“4·26世界知識產(chǎn)權日”
- 泰國多地超40度!政府警告民眾“少
- 青海延續(xù)階段性降低 失業(yè)保險、工
- 天天動態(tài):我國已有20個省份、40余條
- 大單壓盤是好事嗎? 大單壓盤買入
- 基金定投為什么止盈不止損?定投止
- 信用貸款與擔保貸款的區(qū)別有哪些?
- 個人資產(chǎn)負債率過高怎么辦?個人資
- 云海金屬:截止2023年4月20日,股東
- 螞蟻借唄和京東金條哪個利息高?