Monitoring a Raspberry Pi Running Multiple Services

If your Raspberry Pi 4 is acting as a lightweight home server running services like Pi-hole, Jellyfin, OpenVPN, and Samba, regular health checks are important for long-term stability. The good news is that you do not need a GUI or heavy monitoring suite to keep tabs on the system.

A handful of terminal commands can quickly tell you whether your Pi is healthy, overheating, throttling, running out of storage, or experiencing service failures.

Recommended Command Order

When troubleshooting or checking overall health, run these commands in the following order. This sequence starts with hardware-level issues before moving into software and service diagnostics.

1. Check for Power Issues and CPU Throttling

Under-voltage is one of the most common Raspberry Pi stability problems. Weak power delivery can cause silent corruption, instability, poor performance, and random crashes.

vcgencmd get_throttled

Healthy output:

throttled=0x0

Any other value indicates current or historical throttling caused by under-voltage or overheating.

If you see values like:

0x50000
0x50005

your Pi has experienced throttling events and your power supply or cooling should be investigated.

For Raspberry Pi 4 systems running multiple services, the official Raspberry Pi power supply is strongly recommended.

2. Check CPU Temperature

Jellyfin transcoding and Samba transfers can place sustained load on the CPU. Excess heat eventually causes thermal throttling.

vcgencmd measure_temp

Example output:

temp=51.2'C

General temperature guidelines:

Raspberry Pi 4 Measure Temperature Command
  • Under 60°C: Excellent
  • 60°C–70°C: Acceptable under load
  • 70°C–80°C: Getting warm
  • Over 80°C: Thermal throttling begins

If temperatures regularly climb above 80°C, consider adding a heatsink, fan, or improving case airflow.

3. Check CPU Usage, Load, and Memory

The best all-in-one terminal monitoring tool for a headless Raspberry Pi is htop.

Install it:

sudo apt install htop

Run it:

htop

Inside htop, monitor:

Raspberry Pi 4 htop Command
  • CPU usage across all cores
  • Memory consumption
  • Swap usage
  • Processes consuming excessive resources
  • I/O wait percentages

Many users focus too heavily on RAM usage, but on an 8 GB Raspberry Pi 4, memory is rarely the bottleneck for Pi-hole, Jellyfin, OpenVPN, and Samba combined.

Linux also aggressively caches unused RAM for performance improvements, so the more important metric is available memory rather than free memory.

To check memory allocation more directly:

free -h

Pay close attention to the available column rather than only free.

4. Check Storage Usage

A nearly full drive can cause service failures, database corruption, logging problems, and poor overall performance.

df -h

Look at the Use% column for your root filesystem.

  • Below 80%: Healthy
  • 80%–90%: Monitor closely
  • Over 90%: Clean up space immediately

Jellyfin metadata, Samba shares, logs, and cached files can consume storage faster than expected.

5. Check for SD Card or Disk Errors

MicroSD cards wear out over time, especially under heavy write workloads.

Check kernel logs for storage-related errors:

sudo dmesg -l err,crit

Watch for messages containing:

  • I/O error
  • mmcblk0
  • EXT4-fs error

These often indicate a failing SD card or unstable storage device.

If your Raspberry Pi is serving media through Jellyfin or handling constant Samba writes, booting from an SSD instead of a MicroSD card can significantly improve reliability and performance.

6. Verify Service Statuses

Once hardware checks look healthy, verify that your services are running properly.

sudo systemctl is-active pihole-FTL jellyfin openvpn smbd

Healthy output:

active
active
active
active

If a service reports:

  • inactive
  • failed
  • degraded

inspect the logs for that service:

sudo journalctl -u jellyfin -n 50

Replace jellyfin with the appropriate service name as needed.

Understanding Jellyfin Resource Usage

One common surprise for Raspberry Pi 4 owners is that Jellyfin often uses very little RAM even while serving media.

This is normal.

Direct-play streaming uses minimal resources. The heavy workload begins when Jellyfin needs to transcode video into another format or bitrate.

During transcoding, CPU usage will spike dramatically while RAM usage may remain relatively low.

On most Raspberry Pi systems, CPU performance and storage speed become bottlenecks long before memory capacity does.

Properly Exiting htop

To exit htop cleanly:

q

or:

F10

While Ctrl+C will also terminate htop, it can occasionally leave terminal formatting looking messy.

If your terminal becomes visually corrupted afterward, run:

clear

or:

reset

A Simple Raspberry Pi Health Checklist

For quick daily or weekly checks, this sequence works well:

vcgencmd get_throttled
vcgencmd measure_temp
free -h
htop
df -h
sudo dmesg -l err,crit
sudo systemctl is-active pihole-FTL jellyfin openvpn smbd

Running through these commands regularly provides a fast overview of your Raspberry Pi’s hardware health, storage integrity, thermal status, and service stability.