# 如何實現基于Prometheus監控Docker主機
## 前言
在云原生和微服務架構盛行的今天,容器化技術已成為基礎設施的重要組成部分。Docker作為最流行的容器運行時,其運行狀態監控直接影響業務穩定性。本文將詳細介紹如何利用Prometheus構建完整的Docker主機監控體系。
## 一、監控架構概述
### 1.1 核心組件關系
[ Docker Host ] → [ cAdvisor ] → [ Prometheus Server ] → [ Grafana ]
### 1.2 組件功能說明
- **cAdvisor**:Google開源的容器監控工具,自動收集容器資源使用數據
- **Node Exporter**:采集主機級指標(非容器專用)
- **Prometheus**:時序數據庫和告警中心
- **Grafana**:數據可視化平臺
## 二、環境準備
### 2.1 軟件版本要求
| 組件 | 推薦版本 |
|--------------|-----------|
| Docker | 20.10+ |
| Prometheus | 2.30+ |
| cAdvisor | latest |
| Node Exporter| 1.3+ |
### 2.2 網絡配置建議
確保監控組件間網絡可達:
```bash
# 創建監控專用網絡
docker network create monitor-net
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 \
--network=monitor-net \
gcr.io/cadvisor/cadvisor:latest
docker run -d \
--name=node-exporter \
--net=monitor-net \
--pid="host" \
--volume="/:/host:ro,rslave" \
quay.io/prometheus/node-exporter:latest \
--path.rootfs=/host
創建prometheus.yml
配置文件:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
啟動Prometheus服務:
docker run -d \
-p 9090:9090 \
-v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \
--name prometheus \
--network=monitor-net \
prom/prometheus
指標名稱 | 說明 |
---|---|
container_cpu_usage_seconds_total | 容器CPU累計使用時間(秒) |
container_memory_usage_bytes | 容器內存使用量(字節) |
container_network_receive_bytes | 網絡接收流量 |
# 計算CPU使用率
100 - (avg by(instance)(irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)
docker run -d \
-p 3000:3000 \
--name=grafana \
--network=monitor-net \
grafana/grafana-enterprise
groups:
- name: docker-alerts
rules:
- alert: HighContainerCPU
expr: sum(rate(container_cpu_usage_seconds_total[1m])) by (name) > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU usage on {{ $labels.name }}"
docker run -d \
--name alertmanager \
--network=monitor-net \
-p 9093:9093 \
prom/alertmanager
修改Prometheus配置:
- job_name: 'docker-hosts'
file_sd_configs:
- files:
- /etc/prometheus/docker-hosts.yml
# 為Prometheus添加數據卷
-v prometheus_data:/prometheus
# 檢查cAdvisor指標
curl http://localhost:8080/metrics | grep container_cpu
通過本文介紹的方案,您已經可以構建完整的Docker主機監控體系。實際生產中建議結合業務特點調整監控指標,并建立完善的告警升級機制。Prometheus強大的查詢能力配合Grafana的可視化,能夠為容器化環境提供深度的可觀測性支持。
注:本文所有配置已在Docker 20.10.12和Prometheus 2.34.0環境下驗證通過 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。