Mark Ku's Blog
首頁 關於我
cAdvisor + Prometheus + Grafana:打造容器資源監控系統
Cloud
cAdvisor + Prometheus + Grafana:打造容器資源監控系統
Mark Ku
Mark Ku
November 25, 2024
1 min

前言

在先前的文章中,我們展示了如何使用 Prometheus 來監控 Nginx 的效能,隨著容器化技術的普及,監控 Docker 容器的資源使用情況同樣重要。本篇文章將介紹如何使用 cAdvisor(Container Advisor)結合 Prometheus 和 Grafana,來全面監控 Docker 容器的 CPU、記憶體、磁碟和網路等資源。

什麼是 cAdvisor?

cAdvisor 是 Google 開發的開源工具,用於即時監控容器的資源使用情況及性能數據。相較於基本的 Docker 命令(如 docker stats),cAdvisor 提供了更詳細的數據及圖型化的界面來查詢,並可與 Prometheus 及 Grafana 無縫整合。

安裝和部署 cAdvisor

首先,我們需要啟動 cAdvisor 容器來收集 Docker 資源數據。

啟動 cAdvisor 容器

使用以下指令啟動 cAdvisor 容器:

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8884:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

這將在本地端口 8884 上啟動 cAdvisor。

訪問 cAdvisor

啟動後,打開瀏覽器,訪問 http://localhost:8884 檢查 cAdvisor 的儀表板,如下圖所示:

cAdvisor 儀表板
cAdvisor 儀表板

設定 Prometheus 監控 cAdvisor

接下來,修改 Prometheus 的設定文件,增加對 cAdvisor 的監控任務。

參考之前Prometheus監控 nginx 文章的Github Repo 的設定檔

複製 Prometheus 採集器的的設定檔 prometheus.yaml 修改成 “prometheus-with-cadvisor.yaml”,並在設定文件中新增以下內容:

- job_name: "cadvisor"
  static_configs:
    - targets: ["cadvisor:8080"]  # cAdvisor 的服務地址和埠號

複製部署的設定檔 deployment.yaml 修改成 deployment-with-cadvisor.yaml

  cadvisor:
    image: gcr.io/cadvisor/cadvisor:latest
    container_name: cadvisor
    ports:
      - "8884:8080" # cAdvisor 預設埠號
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro    

建立及運行容器

docker-compose -f ./deployment-with-cadvisor.yaml up -d

驗證Prometheus設定

檢查 Prometheus 的採集器 Target 頁面http://localhost:9090/targets,確認 cAdvisor 是否被正常發現並抓取數據:

![Prometheus Target](prometheus -target.png)

使用 Grafana 可視化數據

Grafana 提供了強大的數據可視化功能,以下是如何將 cAdvisor 的數據集成到 Grafana 儀表板中的步驟:

下載 Grafana 模板

Grafana 官方模板下載針對 cAdvisor 儀表板。

匯入 Dashboard 模板

進入 Grafana 儀表板,點擊 “Import”,將下載的 JSON 文件上傳至 Grafana。

匯入 Dashboard
匯入 Dashboard

導入完成後,您將看到即時的容器監控數據,包括 CPU、記憶體、磁碟和網路使用情況。

總結

透過 cAdvisor、Prometheus 和 Grafana 的結合,我們可以實現對 Docker 容器資源的全面監控,從而幫助我們更高效地管理和優化容器化應用。

相關連結

  • Prometheus 官方文檔
  • Grafana 官方模板市場
  • Prometheus 和 Grafana Docker 範例
  • GKE Prometheus

Tags

Mark Ku

Mark Ku

Software Developer

9年以上豐富網站開發經驗,開發過各種網站,電子商務、平台網站、直播系統、POS系統、SEO 優化、金流串接、AI 串接,Infra 出身,帶過幾次團隊,也加入過大團隊一起開發。

Expertise

前端(React)
後端(C#)
網路管理
DevOps
溝通
領導

Social Media

facebook github website

Related Posts

使用 Prometheus 監控 Nginx 請求
使用 Prometheus 監控 Nginx 請求
November 24, 2024
1 min

Quick Links

關於我

Social Media