收起左侧

Prometheus + Grafana + Scaphandre 全栈硬件监控方案分享

0
回复
86
查看
[ 复制链接 ]

1

主题

1

回帖

0

牛值

江湖小虾

Prometheus + Grafana + Scaphandre 全栈硬件监控方案分享

在家用 NAS 上的**硬件监控系统,实时监控 CPU、核显、UPS、电源消耗、容器功耗等数据。整个方案完全基于 Docker Compose,方便部署和维护。下面给大家分享我的配置和一些说明。

⚙️ 技术栈

  • Prometheus:数据采集与存储
  • Grafana:数据可视化面板
  • Node Exporter:系统基础指标采集(CPU、内存、磁盘、网络等)
  • Intel GPU Exporter:Intel 核显信息采集
  • Scaphandre:CPU 功耗及 Docker 容器功耗采集
  • NUT Exporter:UPS 状态采集

📝 配置示例

services:

#-------------------------------------------------------------------
# Prometheus - 数据采集与存储
# 负责抓取各类 exporter 的 metrics 并存储,可被 Grafana 可视化
# 端口 9090
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: always
    user: "0"
    network_mode: host
    ports:
      - "9090:9090"  # Prometheus Web 界面
    volumes:
      - ./prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml:ro  # 配置文件
      - ./prometheus/data:/prometheus  # 数据存储路径
      - ./prometheus/config/rules:/etc/prometheus/rules:ro  # 告警规则
    command:
      - "--config.file=/etc/prometheus/prometheus.yml"
      - "--storage.tsdb.path=/prometheus"  # TSDB 存储路径
      - "--storage.tsdb.retention.time=365d"  # 保留数据 1 年
      - "--storage.tsdb.retention.size=200GB"  # 最大存储 200GB
      - "--storage.tsdb.wal-compression"  # 启用 WAL 压缩,节省空间

#-------------------------------------------------------------------
# Grafana - 数据可视化
# 负责将 Prometheus 数据展示成各种图表
# 端口 3000
  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: always
    user: "0"
    network_mode: host
    ports:
      - "3000:3000"
    volumes:
      - ./grafana/data:/var/lib/grafana  # 持久化数据
    environment:
      - GF_SECURITY_ADMIN_USER=admin  # 默认管理员账号
      - GF_SECURITY_ADMIN_PASSWORD=admin  # 默认管理员密码
      - GF_USERS_ALLOW_SIGN_UP=false  # 禁止注册新用户

#-------------------------------------------------------------------
# Node Exporter - 系统基础信息采集
# 包含 CPU、内存、磁盘、网络等指标
# 端口 9100
  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    restart: always
    pid: host
    volumes:
      - /:/host:ro,rslave  # 挂载根文件系统,readonly
    command:
      - "--path.rootfs=/host"
    network_mode: host
    ports:
      - "9100:9100"

#-------------------------------------------------------------------
# Intel GPU Exporter - Intel 核显信息采集
# 端口 8055
  intel-gpu-exporter:
    image: ghcr.io/onedr0p/intel-gpu-exporter:rolling
    container_name: intel-gpu-exporter
    restart: unless-stopped
    privileged: true  # 需要权限访问 /dev/dri
    pid: host
    ports:
      - "8055:8080"
    volumes:
      - /dev/dri/:/dev/dri/  # 挂载 GPU 设备

#-------------------------------------------------------------------
# Scaphandre - CPU 功耗 + Docker 容器功耗采集
# 端口 8056
  scaphandre:
    image: hubblo/scaphandre:latest
    container_name: scaphandre
    restart: unless-stopped
    privileged: true  # 访问功耗接口
    pid: host
    security_opt:
      - apparmor:unconfined
    ports:
      - "8056:8080"
    volumes:
      - /proc:/proc
      - /sys/class/powercap:/sys/class/powercap:ro  # 访问功耗信息
      - /var/run/docker.sock:/var/run/docker.sock:ro  # 获取容器功耗
    command:
      - prometheus  # 输出 Prometheus 格式
      - --address
      - 0.0.0.0
      - --port
      - "8080"
      - --containers  # 包含容器功耗

#-------------------------------------------------------------------
# NUT Exporter - UPS 数据采集
# 端口 3493
  nut-exporter:
    image: ghcr.io/druggeri/nut_exporter:latest
    container_name: nut-exporter
    restart: unless-stopped
    network_mode: host
    environment:
      - NUT_SERVER=127.0.0.1  # UPS 服务地址
      - NUT_PORT=3493  # UPS 端口
      - NUT_UPS_NAME=ups0  # UPS 名称

🔧 使用说明

  1. 将配置保存为 docker-compose.yml
  2. 确保 /prometheus/config/prometheus.yml 存在并配置好采集目标
  3. docker-compose up -d 启动所有服务
  4. 浏览器访问:
    • Prometheus: http://<NAS_IP>:9090
    • Grafana: http://<NAS_IP>:3000 (默认 admin/admin)
    • Intel GPU Exporter: http://<NAS_IP>:8055/metrics
    • Scaphandre: http://<NAS_IP>:8056/metrics

✅ 特点

  • **监控覆盖 CPU、GPU、系统、UPS、电源消耗

  • 完全基于 Docker,易于升级和迁移

  • 数据保留一年,支持 WAL 压缩,减少存储占用

  • 可直接在 Grafana 中构建丰富面板
    image.png

    image.png

收藏
送赞 1
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则