生产级容器监控cAdvisor + Prometheus + Grafana搭建
·
总结
技术栈业界标准,Prometheus + Grafana 是云原生监控事实标准
监控维度完整:宿主机 + 容器 + 自监控全覆盖
部署极简单,一条脚本跑通,适合新手 / 快速搭建
资源占用低,低配机器也能流畅运行
可长期用于生产环境,稳定、可扩展、可维护
#拉取cAdvisor + Prometheus + Grafana镜像
docker pull swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/google/cadvisor:v0.33.0
docker tag swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/google/cadvisor:v0.33.0 docker.io/google/cadvisor:v0.33.0
docker pull swr.cn-east-3.myhuaweicloud.com/kubesre/quay.io/prometheus/node-exporter:v1.6.1-linux-amd64
docker tag swr.cn-east-3.myhuaweicloud.com/kubesre/quay.io/prometheus/node-exporter:v1.6.1-linux-amd64 swr.cn-east-3.myhuaweicloud.com/kubesre/quay.io/prometheus/node-exporter:v1.6.1
docker pull swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/grafana/grafana-enterprise:12.0.2-linux-amd64
docker tag swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/grafana/grafana-enterprise:12.0.2-linux-amd64 docker.io/grafana/grafana-enterprise:12.0.2
docker pull prom/prometheus:latest
# 创建监控目录
mkdir -p ~/docker-monitoring/{prometheus,grafana}
# 进入目录
cd ~/docker-monitoring
#创建 docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '2.4'
services:
# cAdvisor - 采集容器指标
cadvisor:
image: google/cadvisor:v0.33.0
container_name: cadvisor
privileged: true
devices:
- /dev/kmsg
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
ports:
- "8085:8080"
restart: unless-stopped
networks:
- monitoring
# Node Exporter - 采集宿主机指标
node-exporter:
image: swr.cn-east-3.myhuaweicloud.com/kubesre/quay.io/prometheus/node-exporter:v1.6.1
container_name: node-exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--path.rootfs=/rootfs'
- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
ports:
- "9100:9100"
restart: unless-stopped
networks:
- monitoring
# Prometheus - 存储和查询指标
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.enable-lifecycle'
ports:
- "9090:9090"
restart: unless-stopped
networks:
- monitoring
# Grafana - 可视化
grafana:
image: grafana/grafana-enterprise:12.0.2
container_name: grafana
volumes:
- grafana_data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin123
- GF_USERS_ALLOW_SIGN_UP=false
ports:
- "3000:3000"
restart: unless-stopped
networks:
- monitoring
volumes:
prometheus_data:
driver: local
grafana_data:
driver: local
networks:
monitoring:
driver: bridge
EOF
# 删除错误的 prometheus.yml 目录
rm -rf /root/docker-monitoring/prometheus/prometheus.yml
# 验证已删除
ls -la /root/docker-monitoring/prometheus/
#创建正确的配置文件
cat > /root/docker-monitoring/prometheus/prometheus.yml << 'EOF'
global:
scrape_interval: 15s
evaluation_interval: 15s
external_labels:
monitor: 'docker-host'
scrape_configs:
# 采集 cAdvisor 数据(所有容器指标)
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
scrape_interval: 10s
# 采集 Node Exporter 数据(宿主机指标)
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
scrape_interval: 10s
# 采集 Prometheus 自身
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
scrape_interval: 10s
EOF
# 重新启动
docker-compose up -d
# 检查状态
docker-compose ps
#验证 Prometheus 目标
curl http://localhost:9090/api/v1/targets | python3 -m json.tool
更多推荐




所有评论(0)