Abbiamo già visto come configurare SNMP su Linux. È chiaro che non si tratta di un compito impossibile, nonostante il protocollo abbia più di 30 anni e abbia le sue stranezze. Una configurazione di base di SNMP su un host Linux non dovrebbe richiedere più tempo rispetto alla maggior parte degli altri protocolli Internet. Il client e il daemon sono open source e disponibili praticamente per qualsiasi sistema.
Tuttavia, in molte infrastrutture si sta diffondendo la tendenza ad abbandonare SNMP. Abbandonare un protocollo onnipresente, uno strumento di monitoraggio standardizzato che ci accompagna da decenni, non è una decisione facile. Devono esistere valide ragioni.
E in effetti esistono.
Come protocollo per la gestione dei dispositivi di rete (la "M" di SNMP sta per "Management"), aveva perfettamente senso implementarlo negli anni '90. Aperto, standard e relativamente facile da usare. I produttori di reti lo hanno implementato nei router, negli switch e nei firewall per oltre 30 anni e non c'è motivo di credere che questo si fermerà presto. Al giorno d'oggi, SNMP è ancora facilmente reperibile nelle reti e tra i server Linux in una versione o nell'altra. Questo non cambierà nei prossimi anni.
SNMP è quindi ancora un protocollo importante per gli amministratori di rete che monitorano i dispositivi. Soprattutto nelle infrastrutture di rete più vecchie, SNMP potrebbe essere già stato impostato da un amministratore precedente. Questo non significa necessariamente che siamo costretti a usare la sua interfaccia a riga di comando, né il protocollo stesso. Non si tratta solo di un protocollo vecchio e non aggiornato. Ci sono diversi motivi per cui SNMP potrebbe non essere più lo strumento di scelta per il monitoraggio della rete.
Perché è meglio non usare SNMP su Linux
Sebbene vi siano indiscutibili vantaggi, questi sono superati dagli aspetti negativi. SNMP ha sempre sofferto di implementazioni scadenti da parte dei produttori di reti, il che rende i dispositivi di monitoraggio non ottimali e soggetti a errori imprevisti. La mancanza di un'adeguata evoluzione tecnologica si ripercuote su un protocollo che ha più di 30 anni. Le versioni originali v1, v2 e v3 sono uscite con miglioramenti minimi che non hanno modificato le funzionalità di base e, soprattutto, le carenze di SNMP. Pertanto, non sorprende che due importanti attori come Microsoft e Google abbiano recentemente dichiarato SNMP deprecato (quest'ultimo è arrivato addirittura ad affermare che SNMP è morto). SNMP manca di adattabilità e sicurezza. Non è mai stato concepito per essere sicuro e modulare, e questo è particolarmente evidente oggi.
Windows lo ha abbandonato a favore di WMI e poi di WinRM. Gli strumenti più recenti hanno implementato strutture di dati più facili da analizzare, come XML e JSON, utili per sviluppare script e automazione. Dall'altra parte del mondo dei server, gli strumenti di Linux sono tutt'altro che avanzati: net-snmp
è un software di monitoraggio di basso livello, privo di una visione d'insieme dell'infrastruttura.
SNMP non è mai stato particolarmente veloce e nelle reti con decine o centinaia di host ogni millisecondo conta. È difficile monitorare in modo incrociato un dispositivo: finirebbe per occupare la maggior parte dei cicli della CPU. I lodevoli miglioramenti in termini di sicurezza e privacy della versione 3 hanno aggiunto un nuovo carico al già lento protocollo sottostante. E nessuno dei due può essere considerato ottimale, dal momento che il loro supporto dipende dagli agenti e finora è stato scarso. L'uso di pacchetti UDP è inaffidabile, poiché non è prevista alcuna conferma di ricezione.
Una serie di scelte sbagliate ha portato SNMP a rimanere indietro rispetto ad altre soluzioni di monitoraggio su Linux e altrove per un po' di tempo. Il motivo principale per cui SNMP non è stato ancora abbandonato è il supporto di dispositivi legacy su molte reti. Non è una buona pubblicità per un protocollo che dovrebbe rendere semplice e affidabile il monitoraggio e la configurazione degli host.
Anche se Linux stesso non ha abbandonato SNMP come ha fatto Windows, c'è un numero enorme di alternative migliori rispetto al monitoraggio SNMP che lo rendono superfluo. Oggi le API REST e SOAP di molti dispositivi e applicazioni di rete consentono un livello di granularità che SNMP non è in grado di offrire. NetFlow di Cisco e i suoi successori superano ampiamente SNMP in termini di analisi del cosa e del dove del traffico di rete. SSH è ormai ovunque e consente di fare molto di più di quanto possa fare un agente SNMP, con una maggiore sicurezza e un minore overhead.
Anche nei casi in cui non è possibile passare da SNMP, ad esempio quando un server Linux è collegato a router o switch che supportano solo SNMP, è possibile utilizzare uno strumento diverso con un'interfaccia utente migliore e più opzioni.
Monitoraggio basato su agenti invece che su SNMP?
Le soluzioni di monitoraggio basate su agenti offrono agli amministratori un'ampia flessibilità di configurazione e una serie di opzioni di monitoraggio che SNMP non è in grado di eguagliare. C'è una ragione per la loro popolarità, dopotutto. Questi tipi di strumenti possono vantare alcuni vantaggi che li rendono una scelta solida rispetto a SNMP.
In primo luogo, per quanto riguarda le prestazioni, non c'è quasi concorrenza. Gli agenti sono ottimizzati per l'hardware su cui girano e sono stati sviluppati in linguaggi moderni, in modo da poter sfruttare la potenza dell'hardware moderno. Vengono eseguiti sul dispositivo stesso e si occupano di raccogliere le metriche da esporre all'esterno quando richiesto. Sono più efficienti dal punto di vista delle risorse.
Sebbene sia vero che SNMP per i dati grezzi abbia prestazioni comparabili, perde chiaramente se confrontato con la quantità di informazioni che una soluzione basata su agenti come Checkmk può restituire. I dati provenienti da container, database, cluster e servizi cloud rientrano nel campo di applicazione di uno strumento di monitoraggio basato su agenti. SNMP è solo un protocollo e può fornire solo informazioni di base. Gli strumenti di monitoraggio basati su agenti raccolgono tutti i dettagli desiderati, entro i limiti di ciò per cui sono stati sviluppati. Non ci sono praticamente limiti a ciò che un agente può coprire.
Questo ci porta al prossimo vantaggio: l'estensibilità. Mentre SNMP è un insieme stabile e fisso di comandi, le soluzioni di monitoraggio basate su agenti possono essere estese. Una nuova versione di un agente può offrire maggiori possibilità, ampliare la copertura, migliorare le prestazioni e così via. Poiché lo sviluppo è, di solito, nelle mani di una singola azienda, non deve passare attraverso l'approvazione di un comitato, come deve fare un protocollo Internet. Pertanto, i cambiamenti avvengono più rapidamente e le nuove versioni vengono rilasciate più volte all'anno. La maggior parte degli strumenti di monitoraggio basati su agenti consente di estenderli con plug-in e persino, come nel caso di Checkmk, di scriverne di propri per personalizzare ciò che si desidera monitorare e come. Questo è un aspetto che SNMP non può replicare, mai.

Checkmk e SNMP
Checkmk supporta SNMP sia nell'edizione Raw che in quella Enterprise. Non solo può sostituire SNMP in tutti i suoi aspetti con i propri agenti, ma può anche interagire tramite SNMP con i dispositivi su cui non si ha il controllo completo. Le interrogazioni e il monitoraggio vengono effettuati dall'interfaccia di Checkmk senza richiedere alcuna conoscenza specifica del protocollo SNMP. È persino più facile che configurare SNMP.
Gli amministratori che non possono o non vogliono abbandonare il monitoraggio basato su SNMP su Linux possono ancora utilizzarlo attraverso Checkmk, avendo sotto controllo una pletora di altri host che utilizzano altri agenti di monitoraggio che non sono SNMP. Pur raccomandando l'uso di metodi più recenti per il monitoraggio su Linux, non è necessario sbarazzarsi immediatamente di SNMP se è disponibile una soluzione che aggira alcuni dei suoi problemi (come Checkmk). Gli amministratori non dovrebbero scendere a compromessi in termini di usabilità, sicurezza e prestazioni utilizzando SNMP direttamente o configurando snmpd sui loro server Linux. Esistono opzioni migliori.