总结
技术栈业界标准,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

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐