Skip to main content

Full SNMP Monitoring on Raspberry Pi 5 for LibreNMS (UCD-SNMP + Extend Workaround)

Date: May 14, 2025
Category: Monitoring / SNMP
Backlink: LibreNMS Docker Deployment on Raspberry Pi 5


🧩 Overview

This update documents how I configured full-featured SNMP monitoring on a Raspberry Pi 5 running LibreNMS inside Docker. Since hrProcessorLoad and traditional Host Resources MIB features are often unavailable or broken on ARM-based systems, I used UCD-SNMP and NET-SNMP-EXTEND-MIB to monitor:

  • ✅ CPU usage

  • ✅ Memory usage (real, buffers, cache, swap)

  • ✅ Disk space

  • ✅ Temperature via custom script

  • ✅ Graphs and health sensors in LibreNMS dashboard


🔧 Step-by-Step Setup

1. Edit SNMP Configuration

Update /etc/snmp/snmpd.conf with:

rocommunity public
disk / 10000

view   systemonly  included   .1.3.6.1.2.1.1
view   systemonly  included   .1.3.6.1.2.1.25
view   systemonly  included   .1.3.6.1.4.1.2021
view   systemonly  included   .1.3.6.1.4.1.8072.1

extend temp /bin/bash /usr/local/bin/snmp-temperature.sh

The disk line enables / monitoring. The extend line provides temperature monitoring.


2. Create Extend Script for CPU Temp

sudo nano /usr/local/bin/snmp-temperature.sh

Paste:

#!/bin/bash
vcgencmd measure_temp | sed "s/temp=//;s/'C//"

Make it executable:

sudo chmod +x /usr/local/bin/snmp-temperature.sh

3. Give SNMP Access to Pi Temperature Sensor

sudo usermod -aG video Debian-snmp
sudo reboot

4. Verify SNMP Outputs

snmpwalk -v2c -c public localhost .1.3.6.1.4.1.2021.4     # Memory
snmpwalk -v2c -c public localhost .1.3.6.1.4.1.2021.9     # Disk
snmpwalk -v2c -c public localhost hrProcessorLoad        # CPU per core
snmpwalk -v2c -c public localhost .1.3.6.1.4.1.2021.10    # Load avg
snmpwalk -v2c -c public localhost NET-SNMP-EXTEND-MIB::nsExtendOutput1Line.\"temp\"   # Temperature

5. Ensure Pi is Added in LibreNMS

In the web UI:

  • Add device: 192.168.1.174 (not localhost)

  • SNMP v2c, community public

  • Confirm SNMP test passes


📦 Inside the Docker Container

Enter container:

docker exec -it librenms bash
cd /opt/librenms

Run poller and rediscovery:

php artisan config:clear
./lnms poller:discovery 1
./lnms device:poll 1

📊 Final Results in LibreNMS

From the Pi's page:

  • Graphs → CPU, Memory, Storage, Temperature are all active

  • Health tab shows temperature sensor: temp1

  • Storage tab shows / and /boot/firmware

  • Dashboard Device Graphs widget now shows mini graphs for each metric


🩺 Troubleshooting Addendum

❌ Memory Graphs Not Appearing?

Make sure:

  • SNMP returns .1.3.6.1.4.1.2021.4 correctly

  • ucd-mib, mempools, and storage modules are enabled in UI

  • You’ve updated the device hostname to use the Pi’s IP, not localhost

  • Use:

    ./lnms poller:discovery 1
    ./lnms device:poll 1
    

✅ Wrap-Up

With this configuration, the Pi 5 running LibreNMS inside Docker is now monitoring itself via SNMP, including:

  • UCD-based metrics

  • Custom extend temperature sensor

  • Full graph integration

This setup is now replicable for other ARM-based Linux systems with similar SNMP limitations!