Cadvisor使用Go語言開發,利用Linux的cgroups獲取容器的資源使用資訊,cadvisor不僅可以蒐集一臺機器上所有執行的容器資訊,還提供基礎查詢介面和http介面,方便其他元件如Prometheus進行資料抓取。
本文介紹下 Cadvisor的安裝,以及如何監控容器,最後去展示資料的。
一、 使用容器部署 cadvisor 採集器[root@prometheus ~]# 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
#如果啟動docker 報錯 ,cadvisor Failed to start container manager: inotify_add_watch /sys/fs/cgroup/cpuacct,cpu: nosuchfile
解決方法:
1、設定cgroup 為可讀寫檔案, 不然的話會報:只讀檔案系統
2、建立軟連線
[root@prometheus ~]# mount -o remount,rw '/sys/fs/cgroup'
[root@prometheus ~]# ln -s /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuacct,cpu
再次啟動容器 就OK 了
二、開啟瀏覽器訪問cadvisor 控制檯瀏覽器訪問 http://192.168.31.250:8080
可以看到 一些容器的metrics 資料
三、 在 prometheus 伺服器上配置 scrap修改配置檔案(新增最下面的job_name: 'docker')
[root@prometheus to]# cat prometheus.ymlglobal: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# Alertmanager configurationalerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093rule_files: # - "first_rules.yml" # - "second_rules.yml"scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['192.168.31.250:9090'] - job_name: 'node' static_configs: - targets: ['192.168.31.30:9100','192.168.31.40:9100','192.168.31.41:9100','192.168.31.42:9100'] params: collect[]: - cpu - meminfo - diskstats - job_name: 'docker' static_configs: - targets: ['192.168.31.250:8080']
#改完後記得重新載入下 prometheus 的配置檔案
[root@prometheus ~]# ps -ef | grep prometheus | grep -v grep | awk '{print $2}' | xargs kill -HUP
四、 在 prometheus 控制檯上 檢視targets可以看到cadvisor 採集器 已經新增到targets 列表中了
五、在grafana 上展示 容器資料這裡使用 grafana dashboard 官網中的模板 https://grafana.com/grafana/dashboards/193
登入grafana , http://192.168.31.250:3000
import 匯入模板,ID 為 193
可以自定義監控名稱,選擇資料來源為prometheus
最終效果
本篇只涉及到 使用Cadvisor監控容器並展示資料 ,並沒有寫到 觸發器的配置告警,這個等後面再更新。