Prometheus收集Docker信息并使用Grafana展示

Prometheus 收集 Docker 信息時头镊,通常使用 cAdvisor(Container Advisor)作為收集器妆丘。cAdvisor 是一個開源的工具部翘,專門用于收集容器運行時的資源使用情況和性能數(shù)據(jù)暇务,支持 Docker 容器劣针。它能夠監(jiān)控 CPU亡脸、內(nèi)存押搪、網(wǎng)絡、磁盤 I/O 等多種指標浅碾,并將這些數(shù)據(jù)暴露為 Prometheus 可以抓取的指標大州。

官方地址:
https://github.com/google/cadvisor

在CentOS上運行參考地址:
https://github.com/google/cadvisor/blob/master/docs/running.md

運行 cAdvisor 容器

你可以通過 Docker 啟動一個 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=/cgroup:/cgroup:ro \
  --publish=8080:8080 \
  --detach=true \
  --restart unless-stopped \
  --name=cadvisor \
  google/cadvisor:latest

在 Docker 中,--volume(或者簡寫為 -v)選項用于將宿主機的文件或目錄掛載到容器中垂谢。這里的命令示例中使用了多個 --volume 選項厦画,每個選項都將宿主機上的目錄或文件掛載到容器內(nèi)的某個位置。以下是這些掛載的含義:

如:--volume=/:/rootfs:ro:

  • 宿主機路徑:/ (根目錄)
  • 容器內(nèi)路徑:/rootfs
  • 掛載模式:ro (只讀)
  • 含義:將宿主機的根文件系統(tǒng)以只讀模式掛載到容器的 /rootfs 目錄中滥朱。這樣容器能夠訪問宿主機的所有文件系統(tǒng)結構苛白,但不能進行任何修改。

其他目錄:

  • /var/run: 通常包含一些運行時的進程和服務相關的文件焚虱,如 Docker 守護進程的 Unix socket购裙,這樣容器可以讀取這些文件,但無法修改鹃栽。
  • /sys: 文件系統(tǒng)是 Linux 中用于存儲和訪問系統(tǒng)設備的信息和狀態(tài)的虛擬文件系統(tǒng)躏率,通過只讀方式掛載躯畴,可以讓容器獲取系統(tǒng)的狀態(tài)信息。
  • /var/lib/docker:宿主機的 Docker 數(shù)據(jù)目錄(存放容器薇芝、鏡像蓬抄、網(wǎng)絡等信息),cAdvisor 通過訪問這個目錄夯到,可以獲取有關 Docker 容器的信息嚷缭。
  • cgroup 是 Linux 內(nèi)核提供的一種機制,用于對系統(tǒng)資源(CPU耍贾、內(nèi)存阅爽、I/O 等)進行分組管理和限制,通過訪問 cgroup 文件系統(tǒng)荐开,cAdvisor 可以獲取和監(jiān)控容器的資源使用情況付翁。

查看指標

啟動 cAdvisor 后,它會在 http://<cAdvisor_host>:8080/metrics 路徑下暴露所有收集的指標數(shù)據(jù)晃听。Prometheus 將按照配置的抓取間隔自動抓取這些指標百侧。

如:

66c4bc675d8ac.png

在 Prometheus 中配置抓取

在 Prometheus 的配置文件 prometheus.yml 中,添加一個 scrape job 來抓取 cAdvisor 暴露的指標能扒。比如:

scrape_configs:
  - job_name: 'cadvisor'
    static_configs:
      - targets: ['<cAdvisor_host>:8080']

重啟容器:

docker restart prometheus

prometheus 也是docker安裝的

查看:


66c7583c44c01.png
66c4bbf738057.png

Grafana可視化配置

要在 Grafana 中展示 cAdvisor 收集的 Docker 容器信息佣渴,可以使用以儀表盤模板。這些模板已經(jīng)預先配置好初斑,可以直接導入并使用辛润,從而快速開始監(jiān)控 Docker 容器的資源使用情況。

使用模板

在儀表盤中選擇新建 -> 導入越平,填如復制的模板ID频蛔,選擇數(shù)據(jù)源,保存

搜索模板:

https://grafana.com/grafana/dashboards/?search=Docker

通過關鍵詞如 "Docker" 或 "cAdvisor" 進行搜索

可用模板如:

  • cAdvisor Dashboard
    • ID: 19792
  • Docker Dashboard for Prometheus 中文版
    • ID:11558
  • Docker overview with Cadvisor + docker state exporter + node exporter
    • ID:21154
  • Docker and system monitoring
    • ID: 893
  • Docker Swarm and Containers
    • ID:609
  • docker container & OS node(node_exporter, cadvisor)
    • ID: 16314
    • 中文 docker 容器 cadvisor 和主機指標面板
    • 主機指標 ( 可綁定到主機秦叛,需要 node-exporter 的 instance 標簽值與 cadvisor 的 instance 標簽值相同 )

將 cadvisor 與 node_exporter 指標關聯(lián)

有的面板可以同時監(jiān)控 cadvisor 和 node_exporter 指標晦溪,如需將 cadvisor 與 node_exporter 指標關聯(lián),需要將 cadvisor 和 node_exporter 的 instance 標簽設置為相同的值 ( 例如主機名挣跋、ip地址等 )

cAdvisor 和 node_exporter 是常用的兩個數(shù)據(jù)源三圆。cAdvisor 用于監(jiān)控 Docker 容器的資源使用情況,而 node_exporter 用于監(jiān)控主機級別的系統(tǒng)資源(如 CPU避咆、內(nèi)存舟肉、磁盤等)。

為了在同一個 Grafana 面板中同時展示這兩者的數(shù)據(jù)查库,并確保它們的監(jiān)控數(shù)據(jù)能夠正確關聯(lián)起來路媚,你需要確保這兩個數(shù)據(jù)源的 instance 標簽具有相同的值。通常這個值是主機名或 IP 地址樊销。

如何設置 instance 標簽為相同值

你需要在 prometheus.yml 配置文件中使用 relabel_configs 來覆蓋 instance 標簽的默認值整慎。
找到配置 cAdvisor 和 docker宿主機Node Exporter 的抓取任務的部分脏款,并添加 relabel_configs 來替換 instance 標簽的。
如:

   # 監(jiān)控Docker宿主機主機的 Node Exporter
  - job_name: 'docker_node_exporter' 
    static_configs:
      - targets: ['192.168.31.77:9100']  
    relabel_configs:
      - target_label: instance
        replacement: 'DockerHost'

  # 監(jiān)控Docker相關信息
  - job_name: 'cadvisor' 
    static_configs:
      - targets: ['192.168.31.77:8080']
    relabel_configs:
      - target_label: instance
        replacement: 'DockerHost'
  • target_label 指定要替換或設置的目標標簽裤园。在這個例子中撤师,instance 標簽就是我們要替換的目標標簽。
  • replacement 定義了 target_label 標簽的新值拧揽。在這個例子中剃盾,我們將 instance 標簽的值設置為 'DockerHost'。

重啟

docker restart prometheus

在 Prometheus 的 Status -> Targets 中查看


66c7583c44c01.png

這樣 cAdvisor 的 instance 標簽將與 宿主機的 node_exporter 的 instance 標簽一致淤袜。

展示效果如:


66c75a3b3b3a4.png
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末痒谴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子饮怯,更是在濱河造成了極大的恐慌闰歪,老刑警劉巖嚎研,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蓖墅,死亡現(xiàn)場離奇詭異,居然都是意外死亡临扮,警方通過查閱死者的電腦和手機论矾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杆勇,“玉大人贪壳,你說我怎么就攤上這事⊙镣耍” “怎么了闰靴?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長钻注。 經(jīng)常有香客問我蚂且,道長,這世上最難降的妖魔是什么幅恋? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任杏死,我火速辦了婚禮,結果婚禮上捆交,老公的妹妹穿的比我還像新娘淑翼。我一直安慰自己,他們只是感情好品追,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布玄括。 她就那樣靜靜地躺著,像睡著了一般肉瓦。 火紅的嫁衣襯著肌膚如雪遭京。 梳的紋絲不亂的頭發(fā)上银还,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音洁墙,去河邊找鬼蛹疯。 笑死,一個胖子當著我的面吹牛热监,可吹牛的內(nèi)容都是我干的捺弦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼孝扛,長吁一口氣:“原來是場噩夢啊……” “哼列吼!你這毒婦竟也來了?” 一聲冷哼從身側響起苦始,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤寞钥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后陌选,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體理郑,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年咨油,在試婚紗的時候發(fā)現(xiàn)自己被綠了您炉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡役电,死狀恐怖赚爵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情法瑟,我是刑警寧澤冀膝,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站霎挟,受9級特大地震影響窝剖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氓扛,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一枯芬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧采郎,春花似錦千所、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至整份,卻和暖如春待错,著一層夾襖步出監(jiān)牢的瞬間籽孙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工火俄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留犯建,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓瓜客,卻偏偏與公主長得像适瓦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谱仪,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容