SNMP è uno di quei protocolli vecchi (RFC 1157 è del 1990) che continuano a funzionare bene proprio perché fanno una cosa sola: leggere contatori e variabili da apparati di rete. Per il mio homelab ho provato vari NMS prima di fermarmi su Observium Community, e dopo qualche tentativo sbagliato ho una configurazione che gira da oltre un anno senza farmi impazzire.

Il mio setup

Faccio girare Observium su un Raspberry Pi 5 8GB casalingo, con Debian (Raspberry Pi OS Lite 64-bit, ARM64). Lo storage è un SSD da 480 GB attaccato via USB 3.0, perché una microSD generica sotto MariaDB ha vita breve, lo so per esperienza diretta. Tutto ciò che è /var/lib/observium, /var/lib/mysql e /var/lib/observium/rrd finisce sull’SSD via bind mount. Sul Pi resta solo il sistema operativo, su una microSD ad alta affidabilità classe A2. La rete è ethernet gigabit, niente Wi-Fi per un servizio di monitoring che dipende dalla connettività.

Observium su ARM64 funziona dai pacchetti community. Le dipendenze le installo dai repo Debian, prima di tutto:


sudo apt update
sudo apt install apache2 mariadb-server php php-mysql php-gd php-snmp \
  php-curl php-mbstring snmp snmpd fping mtr-tiny rrdtool whois ipmitool

Poi clone del repository community:


sudo mkdir -p /opt/observium
cd /opt
sudo git clone https://git.observium.org/observium.git observium

In /opt/observium/config.php configuro utente DB dedicato (mai root MariaDB), password forte e $config['snmp']['version'] a 2c come default, con SNMPv3 dove possibile.

Il bootstrap iniziale crea lo schema e la prima dashboard:


cd /opt/observium
sudo ./discovery.php -u

Apache serve /opt/observium/html/ su una vhost interna, accessibile solo dalla LAN, mai esposta su internet pubblica.

Agenti SNMP sui device

Su ogni host Linux che voglio monitorare, installo snmpd:


sudo apt install snmpd

In /etc/snmp/snmpd.conf configuro una community string read-only con nome lungo e casuale (mai “public”), e limito l’accesso all’indirizzo del Pi monitoring:


rocommunity SECRETSTRINGLUNGAACASO 203.0.113.10
sysLocation studio
sysContact [email protected]

E faccio il bind solo sull’interfaccia che serve, non su 0.0.0.0:


agentAddress udp:203.0.113.20:161

Riavvio:


sudo systemctl restart snmpd

Sugli switch managed configuro la community via web UI o console, sempre v2c con community casuale per il read e v3 con username/password dove l’hardware lo permette. Niente RW community su nessun device, mai.

Aggiungere device a Observium

Dal Pi monitoring aggiungo un host:


cd /opt/observium
sudo ./add_device.php 203.0.113.20 SECRETSTRINGLUNGAACASO v2c

Observium scopre interfacce, sensori, processi e li polla a cadenze diverse (default cinque minuti per i grafici, un minuto per gli alert). Dopo qualche ora la dashboard mostra throughput, errori, sensori di temperatura, e gli alert si attivano sulle soglie predefinite.

Un caso reale

Una sera, intorno alle 20:30, ho ricevuto un alert email da Observium per packet loss del 12% sull’interfaccia uplink dello switch principale. Latenza ping verso il gateway saliva oltre i 200 ms a tratti. Sono entrato sulla dashboard e ho visto il grafico storico: il packet loss era iniziato circa un’ora prima, in coincidenza con un picco di traffico verso WAN. Ho controllato il duplex sulla porta: half duplex invece di full. Un negoziato sbagliato dopo un riavvio dello switch del piano sopra. Cambio manuale del duplex a full, riavvio interfaccia, latenza tornata a 1-2 ms. Senza Observium avrei dato la colpa al provider e perso una mezz’ora a fare reload sul router. La cronologia SNMP, in questi casi, vale più di mille tcpdump.

Cosa funziona bene

Observium scopre automaticamente quasi tutto: interfacce, VLAN, sensori, processi monitorabili. La storia su RRD è leggerissima e si conserva per anni anche su SSD modesti. L’alerting via mail funziona, è essenziale, e quando un device sparisce ricevo notifica in pochi minuti.

Limiti

Il pacchetto community è in modalità “stable but slowly maintained”, e la UI ha sapore 2015. La Professional Edition costa, ma per un homelab la Community basta. SNMP è un protocollo verboso e non particolarmente sicuro: niente community RW, niente esposizione su WAN, e dove possibile SNMPv3 con autenticazione e cifratura.

In pratica

SNMP + Observium è la mia base storica di metriche di rete: throughput, errori, sensori. Glances + InfluxDB + Grafana gestiscono le metriche di sistema applicative. Sono due piani diversi che insieme mi danno una visione completa dell’homelab. SNMP non è bello, è efficace, ed è uno dei pochi strumenti che ti permettono di rispondere alla domanda “cosa stava succedendo alla rete tre mesi fa alle 22?” senza dover scrivere nulla in più.


Immagine generata con Cloudflare Workers AI / FLUX.

Articolo originale su rpi.temporiti.net