Node Exporter + Grafana Grafana+ Prometheus Prometheus + Docker+ Docker Compose+ Raspberry Pi OS+ cAdvisor

用 Docker Compose 一键部署树莓派系统与容器性能监控栈并可视化

Node-Exporter采集硬件与系统指标,cAdvisor采集容器指标,Prometheus汇聚存储,Grafana可视化展示

✓ 一键docker-compose部署✓ Grafana仪表盘自动provisio ✕ 仅Grafana端口对外暴露✕ 需修改GRUB开启cgroup统计

方案简介

本方案是一套面向树莓派的完整监控解决方案,通过一个 docker-compose 文件一键拉起 Grafana、Prometheus、cAdvisor 与 Node-Exporter 四个容器组成的监控栈。它解决的问题是为树莓派提供全面且易用的性能监控手段:借助 Grafana 的直观仪表盘,可以轻松可视化由 Prometheus 和 cAdvisor 采集的系统指标,而 Node-Exporter 则提供关于树莓派硬件与操作系统的重要信息。这套组合为你提供对系统健康状况的完整可见性,适合希望将树莓派监控水平提升一个台阶的树莓派玩家和运维人员。

亮点与能力

  • 一个 docker-compose 文件即可运行整套树莓派监控栈
  • Grafana 直观仪表盘,轻松可视化系统指标
  • Node-Exporter 提供树莓派硬件与操作系统信息
  • cAdvisor 采集容器级指标
  • 仅 Grafana 端口(3000)暴露在宿主机上,其余服务内部端口访问
  • 支持基于 provisioning 的数据源与仪表盘自动加载
  • 可通过 Grafana.com 导入官方 Dashboard(ID 15120)
  • Prometheus 抓取目标与抓取间隔均可通过配置文件调整

组成与分工

  • Grafana:可视化层,提供直观仪表盘展示 Prometheus 采集的指标,默认用户名密码均为 admin,首次登录会提示修改密码
  • Prometheus:指标采集与存储,通过 prometheus.yml 配置抓取目标(targets),job_name 名称用于在 Grafana 中识别目标
  • cAdvisor:采集容器相关指标,监听 8080 端口
  • Node-Exporter:采集树莓派硬件与操作系统信息,监听 9100 端口
  • Docker / Docker Compose:容器运行与编排基础,通过 docker-compose.yml 定义各服务
  • Raspberry Pi OS:宿主机操作系统(或其他兼容的 Linux 发行版)

前置要求

安装前需确保以下前置条件满足:

  • 宿主机已安装 Docker
  • 宿主机已安装 Docker Compose
  • 宿主机运行 Raspberry Pi OS 或其他兼容的 Linux 发行版

实施步骤

1. 克隆仓库

bash
git clone https://github.com/oijkn/Docker-Raspberry-PI-Monitoring.git

2. 进入克隆目录

bash
cd Docker-Raspberry-PI-Monitoring

3. 创建 data 目录并修改属主

创建 data 目录并修改 prometheusgrafana 文件夹的属主,以获得干净安装:
bash
mkdir -p prometheus/data grafana/data && \
sudo chown -R 472:472 grafana/ && \
sudo chown -R 65534:65534 prometheus/

4. 启动监控栈

bash
docker-compose up -d

这将启动所有容器并使其在宿主机上可用。使用的端口为:3000 (Grafana)、9090 (Prometheus)、8080 (cAdvisor)、9100 (NodeExporter),其中只有 Grafana 暴露在宿主机上。

使用与配置要点

访问仪表盘

在浏览器中打开 http://:3000,例如 http://192.168.1.100:3000。默认用户名和密码均为 admin,首次登录会提示修改密码。凭据可通过编辑 .env 文件修改。

修改监控目标

如需更改监控目标,可编辑 prometheus.yml:targets 部分包含 Prometheus 要监控的所有目标列表;job_name 中定义的名称用于在 Grafana 中识别目标;static_configs 包含目标的 IP 地址,目前来源于 docker-compose.yml 中定义的服务名。若觉得 scrape_interval 过于激进,可改为更合适的值。

验证运行状态

bash
docker-compose ps

查看特定容器日志:
bash
docker logs -f

添加数据源与仪表盘

Grafana v5 引入 provisioning 概念后,可将 datasourcesdashboards 目录放在 provisioning 文件夹中,启动时自动加载。添加新仪表盘只需将 JSON 文件放入 dashboards 目录,下次 Grafana 启动时自动加载。

从 Grafana.com 安装仪表盘(可选)

  • 在 Grafana.com Dashboard 导航到该仪表盘
  • 点击 Copy ID to Clipboard 按钮
  • 在 Grafana 中进入 Import 页面
  • 将 ID 粘贴到 Import via grafana.com 字段
  • 点击 Load,再点击 Import

注意事项与常见问题

排错:启用 cgroup 内存与 swap 统计

如遇问题,需在宿主机上启用 c-group 内存与 swap 统计:
bash
sudo sed -i 's/^GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 swapaccount=1"/' /etc/default/grub
sudo update-grub
sudo reboot

其他

  • 仪表盘旨在帮助你入门树莓派监控,如有改动或建议,欢迎提交 issue 或 pull request
  • 项目基于 MIT License 开源

优缺点

  • ✓ 一键docker-compose部署
  • ✓ Grafana仪表盘自动provisio
  • ✕ 仅Grafana端口对外暴露
  • ✕ 需修改GRUB开启cgroup统计

出处

本方案挖掘自开源项目 oijkn/Docker-Raspberry-PI-Monitoring,方案内容与实施命令均来自其 README 原文。

方案出处
oijkn/Docker-Raspberry-PI-Monitoring:A docker-compose stack solution for monitoring host and containers with Promethe
577 star A docker-compose stack solution for monitoring host and containers with Prometheus, Grafana, cAdvisor and NodeExporter.

本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。