在現代軟件開發和運維領域,容器化技術的應用越來越廣泛,其中 Docker 作為最受歡迎的容器化解決方案之一,其容器的監控管理變得至關重要。本文將詳細介紹如何使用 cadvisor、Prometheus 和 Grafana 來監控 Docker 容器的狀態。
一、安裝鏡像
我們需要安裝幾個關鍵的鏡像,這些鏡像將幫助我們收集、存儲和可視化容器及主機的相關數據。通常,我們會將 cadvisor 和 node - exporter 安裝在被監控的主機上,而將 Prometheus 和 Grafana 安裝在監控服務器上,不過它們也可以安裝在同一臺服務器上。
以下是具體的安裝命令:
docker pull gcr.io/cadvisor/cadvisor:v0.49.1 # 收集并展示容器的資源使用和性能數據
docker pull prom/prometheus # 基于拉取模型收集指標數據,可以設置報警規則
docker pull grafana/grafana # 監控數據可視化
docker pull quay.io/prometheus/node-exporter # 收集主機級別的系統指標
二、添加配置文件
在主機的根目錄下,我們需要添加一個?prometheus.yml
?文件,并進行如下配置:
global:scrape_interval: 15sevaluation_interval: 15sscrape_timeout: 10salerting:alertmanagers:- static_configs:- targets: ["alertmanager:9093"]rule_files:- "rules/*.rules"scrape_configs:- job_name: "prometheus"static_configs:- targets: ["localhost:9090"]labels:app: "prometheus"environment: "production"- job_name: "docker" # 監控的docker容器static_configs:- targets: ["監控服務器IP地址或域名:8080"]labels:instance: "docker-host"environment: "production"- job_name: "linux" # 監控的服務器主機static_configs:- targets: ["監控服務器IP地址或域名:9100"]labels:instance: "server-01"environment: "production"
這些配置項定義了 Prometheus 的全局設置、報警管理、規則文件以及要監控的目標。
三、Compose.yaml 文件編寫
通過?docker-compose
?來管理多個容器是一種非常便捷的方式。以下是?compose.yaml
?文件的內容:
services:prometheus:container_name: prometheusimage: prom/prometheusrestart: unless-stoppednetworks:- 網絡名稱volumes:- /etc/prometheus.yml:/etc/prometheus/prometheus.yml- prometheus_data:/prometheusports:- "9090:9090"cadvisor:container_name: cadvisorimage: gcr.io/cadvisor/cadvisor:v0.49.1restart: unless-stoppedprivileged: truevolumes:- "/:/rootfs:ro"- "/var/run:/var/run:ro"- "/sys:/sys:ro"- "/var/lib/docker:/var/lib/docker:ro"- "/dev/disk:/dev/disk:ro"ports:- "8080:8080"grafana:container_name: grafanaimage: grafana/grafanarestart: unless-stoppednetworks:- 網絡名稱volumes:- grafana_data:/var/lib/grafanaports:- "3000:3000"node_exporter:container_name: node_exporterimage: quay.io/prometheus/node-exporter:latestports:- "9100:9100"command:- '--path.rootfs=/host'network_mode: hostpid: hostrestart: unless-stoppedvolumes:- '/:/host:ro,rslave'networks:網絡名稱:volumes:prometheus_data:grafana_data:
這個文件定義了各個服務的容器配置,包括鏡像、重啟策略、掛載卷、端口映射等。
四、Grafana 配置
(1)數據源配置
啟動 Grafana 后,我們需要添加 Prometheus 作為數據源。在 Grafana 的界面中,按照提示添加 Prometheus 數據源,這將讓 Grafana 能夠從 Prometheus 中獲取監控數據。
(2)儀表板配置
為了更直觀地展示監控數據,我們可以在 Grafana 中導入預設的儀表板。在儀表板導入界面,輸入儀表板 ID 193 和 9276。其中,193 是 Docker 容器監控模板,9276 是 Linux 主機監控模板。導入后,我們就可以清晰地看到 Docker 容器和 Linux 主機的各項監控指標。
通過以上步驟,我們就完成了 Docker 容器狀態的監控系統搭建。利用 cadvisor 收集容器數據,Prometheus 存儲和管理數據,Grafana 進行數據可視化,我們可以及時發現容器運行中的問題,保障系統的穩定運行。