Featured image of post 我用 Netdata 监控家里的树莓派:温度、内存、Docker 全掌握

我用 Netdata 监控家里的树莓派:温度、内存、Docker 全掌握

树莓派跑了那么多服务,我决定用 Netdata 做一套全面的资源监控,部署方式当然是 Docker

一、为什么我要监控树莓派?

我的树莓派一直在跑:

  • Docker
  • Gitea
  • Drone
  • Hugo 生成的博客
  • FRP(实现外网访问)
  • …以及后面要加的一些服务

虽然这些服务本身都运行良好,但有一点让我不太安心:

“我怎么知道树莓派的资源有没有快满了?容器吃不吃内存?夏天温度高了会不会过热?”

我不想等服务挂了才去排查,最好能随时掌握系统运行情况。于是我决定,装一个实时可视化监控平台


二、选择 Netdata:轻量 + 好看 + Docker 友好

我评估了几个选项:

  • Prometheus + Grafana:太重了,适合集群,不适合树莓派
  • Netdata:轻量、自动识别 Docker、开箱即用,还有 Web UI!

所以最后我选择了 Netdata。


三、通过 Docker 安装 Netdata

我直接用官方提供的 docker compose:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
services:
  netdata:
    image: netdata/netdata
    container_name: netdata
    pid: host
    network_mode: host
    restart: unless-stopped
    cap_add:
      - SYS_PTRACE
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    volumes:
      - netdataconfig:/etc/netdata
      - netdatalib:/var/lib/netdata
      - netdatacache:/var/cache/netdata
      - /:/host/root:ro,rslave
      - /etc/passwd:/host/etc/passwd:ro
      - /etc/group:/host/etc/group:ro
      - /etc/localtime:/etc/localtime:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /etc/os-release:/host/etc/os-release:ro
      - /var/log:/host/var/log:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /run/dbus:/run/dbus:ro

volumes:
  netdataconfig:
  netdatalib:
  netdatacache:

几乎不需要改配置,容器启动后直接打开:

1
http://<树莓派 IP>:19999

就能看到炫酷的仪表盘了,CPU、内存、容器状态一览无余。


四、我最关注的监控项

🌡️ 树莓派的 CPU 温度

树莓派一到夏天就容易发热。Netdata 会自动识别温度传感器,直接显示 CPU 当前温度。

🧠 内存和 swap 使用

树莓派内存只有 4G,当多个服务一起跑时,Netdata 的 swap 图会及时提醒我是否溢出。

五、我如何实现外网访问?

Netdata 默认监听本地 19999 端口,局域网能看,但我希望出门在外也能随时查看树莓派状态

我采用的方案依然是熟悉的组合拳:FRP + 自定义子域名 + 基本认证,做到安全又方便。

🔧 配置思路如下:

  • 树莓派运行 frpc,将 Netdata 的 19999 端口暴露出去
  • 使用 http 类型代理 + subdomain 子域名,绑定域名
  • 加上 httpUserhttpPassword,避免 Netdata 面板直接暴露在公网下

✅ 我的 frpc.toml 配置示例:

1
2
3
4
5
6
7
[[proxies]]
name = "netdata"
type = "http"
localPort = 19999
subdomain = "netdata"
httpUser = "{{ .Envs.NETDATA_USER }}"
httpPassword = "{{ .Envs.NETDATA_PASSWORD }}"

这样我就可以随时在手机或 Mac 上打开仪表盘,查看树莓派的实时状态。


六、下一步考虑加上告警

Netdata 支持很多告警机制,包括:

  • 内置阈值检测(如 CPU > 90%,温度 > 70°C)
  • 邮件 / Telegram / Slack 等通知方式

我还没加,主要因为自己也还在摸索中。


七、小结:把树莓派“看得见”

部署 Netdata 后,我就像给树莓派装了一个“控制中心”。 不再需要 ssh 上去,一眼看懂全局。

家庭云平台,不能只是“能跑”,也要“看得见”、“查得清”。


下一篇文章,我会来一波终极汇总,把这一路折腾的所有服务串起来,让你看到我的完整“家庭云”全家桶

使用 Hugo 构建
主题 StackJimmy 设计