Use case
Raspberry Pi monitoring
A Pi that runs something you care about, a home server, a sensor gateway, a Pi-hole or a build runner, usually fails quietly: the SD card fills, it overheats in a cupboard, or it drops off the network and nobody notices for a week.
NoDisrupt watches it from outside. The Linux agent reports CPU, memory, disk and network every minute, a short script sends the CPU temperature, and either one alerts you when the readings cross a line or stop arriving.
Needs the Pro plan: £24 or $29 a month.
Start freeHow it works
- Step 1
Install the agent (64-bit Pi OS)
The agent ships an arm64 build, so a Pi 3, 4 or 5 running 64-bit Raspberry Pi OS installs it with the same one-line command as any Linux server. It runs as a systemd service and reports every 60 seconds.
- Step 2
Send the CPU temperature
The agent does not read temperature, so add an asset monitor and a cron job that posts /sys/class/thermal/thermal_zone0/temp to it. Asset monitors are available on every plan, including Free.
- Step 3
Set thresholds
Pick the readings that matter, for example disk above 85% or CPU temperature above 75 C, and route the alert through an escalation policy to email, SMS or a phone call.
- Step 4
Know when it drops off
Both the agent and the temperature feed alert when data stops arriving, so a Pi that has crashed, lost power or lost wifi raises an incident without anything having to run on it.
NODISRUPT_AUTH_KEY='<your-auth-key>' NODISRUPT_METRIC_ID='<your-monitor-id>' \ sudo -E bash -c "$(curl -fsSL https://downloads.nodisrupt.com/agent/install.sh)"
#!/bin/sh
# /usr/local/bin/pi-temp.sh -- run every minute from cron:
# * * * * * FEED_URL=... FEED_KEY=... /usr/local/bin/pi-temp.sh
T=$(awk '{printf "%.1f", $1/1000}' /sys/class/thermal/thermal_zone0/temp)
curl -fsS -m 10 -X POST "$FEED_URL" \
-H "Authorization: Bearer $FEED_KEY" \
-H "Content-Type: application/json" \
-d "{\"metrics\": {\"cpu_temp_c\": $T}}"What you can alert on
| Watch | Metric or check | Example alert |
|---|---|---|
| CPU load | cpu_percent, load1, load5 | load5 above 4 on a four-core Pi |
| Memory and swap | mem_used_percent, swap_used_percent | Swap above 50%: the Pi is short of RAM |
| SD card or SSD space | disk_<device>_used_percentage | Disk above 85% |
| CPU temperature | cpu_temp_c (your script) | Above 75 C, before the Pi throttles at 80 C |
| Reachability | ping or HTTP monitor | Unreachable from outside |
| Offline | no data received | No reading for 5 minutes |
- The agent needs a 64-bit OS. 32-bit Raspberry Pi OS and 32-bit-only boards (the original Pi Zero, Pi 1 and early Pi 2) are not supported; use the temperature-style script for those instead.
- The agent needs systemd, which Raspberry Pi OS has; minimal images without it need a manual supervisor.
- Server metrics from the agent are a Pro plan feature. The temperature script and ping checks work on Free.
- Free plan alerts go by email; SMS and phone calls use the message credits included with paid plans.
Common questions
Can I monitor a Raspberry Pi for free?
Yes, partly. On the Free plan you can push readings such as CPU temperature from a script, ping the Pi or check a web service it runs, with up to 10 monitors and email alerts. The agent that reports CPU, memory, disk and network is on Pro.
How do I get the Raspberry Pi CPU temperature?
Read /sys/class/thermal/thermal_zone0/temp, which reports millidegrees Celsius: 52312 means 52.3 C. The script on this page divides by 1,000 and posts the result. vcgencmd measure_temp gives the same number in a different format.
What temperature is too hot for a Raspberry Pi?
The Pi 4 and 5 start to throttle their CPU at 80 C and throttle harder at 85 C. Alerting at around 75 C gives you time to add a heatsink, a fan or better airflow before performance drops.
Does the agent work on a Pi 3?
Yes, if it runs a 64-bit OS. The Pi 3 has a 64-bit CPU, so 64-bit Raspberry Pi OS runs on it and the arm64 agent installs normally.
Will I know if the Pi loses power?
Yes. When readings stop, the monitor raises an incident after the window you set. The alert is sent from NoDisrupt, not from the Pi, so it works even when the Pi is completely dead.