Come si comportano gli switch e i router della rete? I dispositivi NAS sono ancora attivi? Qual è la velocità di una particolare interfaccia? La temperatura della sala server è troppo alta? Con SNMP (Simple Network Management Protocol) è possibile scoprire ogni tipo di informazione sui dispositivi della rete.
Poiché molti produttori di hardware supportano questo protocollo, è possibile raccogliere dati da switch di rete, router, UPS e dispositivi di alimentazione, apparecchi NAS, stampanti, ecc. e utilizzarli nel software di monitoraggio. Monitorando questo tipo di dati, è possibile prendere decisioni basate sui fatti, invece di tirare a indovinare. In questo modo potrete persino prevenire i guasti prima che si verifichino.
In questo blog post forniremo un'introduzione a SNMP e alla sua storia, spiegheremo come funzionano gli OID (Object Identifiers) e le MIB (Management Information Bases) e perché ne hai bisogno. Parleremo anche dei pro e dei contro e condivideremo alcune intuizioni dei nostri sviluppatori che scrivono quotidianamente controlli SNMP. Naturalmente, ti mostreremo anche come monitorare i tuoi dispositivi tramite SNMP in Checkmk.
Alcuni fatti su SNMP
Iniziamo con una breve panoramica del protocollo SNMP e dei suoi cambiamenti negli ultimi decenni. Esistono tre versioni principali. SNMP v1 è la più vecchia e risale alla fine degli anni Ottanta. È stata sviluppata come standard per la gestione dei dispositivi di rete tramite IP (Internet Protocol). Più di 30 anni dopo, è ancora in uso, sebbene sia insicura e inefficiente. La versione 1 richiede solo una comunità in chiaro (una sorta di password): Se corrisponde alla comunità memorizzata nell'agente, l'accesso è consentito. SNMP v1 supporta solo contatori a 32 bit, il che non è sufficiente per le reti gigabit di oggi e causa problemi perché i contatori vanno a capo troppo velocemente, cioè più di una volta tra un campione e l'altro.
Quando è importante? Facciamo un po' di conti: Il numero massimo che un contatore a 32 bit può memorizzare è 2^32 = 4.294.967.296 (circa 4 miliardi). Se si vuole monitorare il numero di ottetti ricevuti su un'interfaccia da 1 Gbit completamente occupata, si tratta di 1 miliardo (mille milioni) di bit al secondo. Un ottetto è composto da 8 bit. Quindi, ogni secondo si ricevono circa 125 milioni di ottetti. Dopo 34 secondi, sono stati ricevuti più di 4 miliardi di ottetti e il contatore si chiude e riparte da 0. Evviva!
SNMP v2c aggiunge il supporto per i contatori a 64 bit per le interfacce ad alta capacità. Il successore di v1 invia ancora dati di testo semplice sulla rete, ma introduce un modo nuovo e ottimizzato per inviare e ricevere dati di gestione in trasferimenti massivi. SNMP v2c e SNMP v1 non sono compatibili.
SNMP v3 aggiunge sicurezza a v2c e supporta l'autenticazione (MD5 o SHA-1) e la crittografia (DES o AES 128, talvolta AES 256) e, naturalmente, una combinazione di entrambi. È possibile scegliere tra tre diversi livelli di sicurezza: NoAuthNoPriv (nessuna autenticazione, nessuna privacy), AuthNoPriv (autenticazione, nessuna privacy) e AuthPriv (autenticazione e privacy). Poiché MD5 e SHA-1 sono considerati insicuri al giorno d'oggi, assicurarsi di definire due password diverse quando si configurano le password del dispositivo per l'autenticazione e la crittografia.
NOTA: La crittografia di SNMPv3 richiede molta più potenza di elaborazione e rallenta notevolmente le operazioni. Ecco perché la versione 3 può essere un collo di bottiglia frustrante, ad esempio su enormi switch modulari (vedere la sezione "SNMP è fantastico o fa schifo?"). Molti dispositivi supportano ancora la versione 1 oltre alla versione 2, ma cercate di evitare SNMP v1 a causa del problema del wrapping.
OID e MIB: cosa c'è di strano?
Abbiamo detto che SNMP raccoglie dati e li trasferisce dai dispositivi gestiti al software di monitoraggio. A seconda del dispositivo, possono essere informazioni sul toner di una stampante o sul numero di pagine stampate, sulla larghezza di banda di un'interfaccia di rete, sullo stato delle ventole di un server, ecc. Ogni informazione è un oggetto e ha un proprio identificatore univoco, cioè un indirizzo individuale. Questo indirizzo è chiamato OID(Object Identifier).
Un OID è una lunga sequenza di numeri, separati da punti, ad esempio:
1.3.6.1.2.1.2.2.1.5
È un ordine gerarchico, che segue una struttura ad albero. Leggendolo da sinistra a destra, inizia con la radice (1 = ISO), seguita dalla prima nota figlia (3 = organizzazione identificata) e così via. L'immagine sottostante mostra un paio di percorsi rilevanti in questo albero.

La maggior parte delle parti dell'albero sono standardizzate. Ad esempio, le informazioni relative alle interfacce di rete si trovano sempre negli OID sotto 1.3.6.1.2.1.2. Tuttavia, ogni fornitore può avere i propri OID in un sottoalbero. L'area blu dell'immagine mostra una parte dell'albero OID di Cisco (sotto 1.3.6.1.4.1.9). Ci sono OID generici (albero di sinistra) e OID di prodotti specifici, ad esempio un Cisco UCS (albero di destra).
Per rendere leggibile un OID è necessario un traduttore. Il MIB(Management Information Base) fornisce nomi, definizioni e descrizioni per gli oggetti, quindi convertire un OID in qualcosa di leggibile con un MIB è un po' come decodificare gli indirizzi IP con l'aiuto del DNS. Poiché molti fornitori di hardware utilizzano un proprio schema di numerazione degli OID, è necessario un proprio MIB per comprendere e tradurre i numeri.
NOTA: I clienti chiedono spesso controlli MIB, ma è bene ricordare che il MIB è solo una traduzione: in altre parole, non è la soluzione, ma la strada per la soluzione.
SNMP è fantastico o fa schifo?
SNMP è ancora lo standard di fatto quando si tratta di monitoraggio di rete. Molti dispositivi supportano questo protocollo (e a volte nient'altro!), quindi è possibile monitorare quasi tutto, dal traffico/larghezza di banda e i carichi della CPU allo stato delle ventole di un sistema RAID, fino ai condizionatori d'aria e agli allarmi delle porte. Poiché SNMP raccoglie i dati in modo standardizzato, è possibile utilizzarlo in molte soluzioni di monitoraggio diverse.
Tuttavia, ammettiamolo, ci sono alcuni gravi svantaggi. L'interrogazione di un dispositivo tramite SNMP è lenta e piuttosto inefficiente. Rispetto a SNMPv1, la versione 2 ha migliorato un po' le cose, ma SNMPv3 le peggiora di nuovo con l'aggiunta della sicurezza (guardando l'algoritmo MD5/SHA-1, vorrei mettere le virgolette intorno alla parola "sicurezza").
SUGGERIMENTO: Se la crittografia rallenta le cose nel vostro ambiente, prendete in considerazione la possibilità di tornare alla v2c e di spostare il traffico di gestione su una VLAN separata per garantire la sicurezza.
Sebbene molti dispositivi supportino SNMP, ciò non significa che i fornitori abbiano fatto un ottimo lavoro di implementazione. Le scarse prestazioni sono un problema per gli amministratori che monitorano un dispositivo, dove le richieste SNMP vanno in timeout. Ma un'implementazione SNMP scadente è ancora più fastidiosa per chi sviluppa controlli per una soluzione di monitoraggio. I nostri sviluppatori hanno visto ogni tipo di stack SNMP non funzionante. Basti pensare ai diversi formati di data: Alcuni Paesi usano il AAAA/MM/GG, altri il GG/MM/AAAA o il GG/MM/AAAA e persino il MM/GG/AAA. Un paio di settimane fa abbiamo scritto un controllo per un dispositivo SNMP, in cui il fornitore pensava che l'uso di 3 cifre per i giorni nel formato della data fosse una grande idea - ma che diamine?! Probabilmente potremmo scrivere un intero libro "Storie di SNMP dall'inferno".
Naturalmente, il MIB può essere d'aiuto, ma una cosa è certa: il MIB non è il Santo Graal e molte volte le informazioni memorizzate potrebbero non essere corrette. Dove ci si aspetta di trovare dei Byte, in realtà si possono trovare dei Bit e così via. A proposito, questo è anche il motivo per cui non siamo grandi fan dei generatori di controlli che vengono alimentati con un MIB e che producono un controllo. Potrebbe funzionare, ma molto probabilmente alla fine si passerà un po' di tempo in più a cercare di correggere i controlli difettosi.
Ecco altri consigli dei nostri consulenti: Evita il monitoraggio incrociato con SNMP. Non cercare mai di accedere ai tuoi switch, router, ecc. con più di uno strumento SNMP. Anche se il dispositivo ha una CPU abbastanza potente, probabilmente non è una buona idea configurare due server di monitoraggio o qualsiasi altro strumento per monitorare lo stesso dispositivo contemporaneamente.
Per riassumere: Utilizza SNMP solo se non c'è altro modo. Se non viene implementato correttamente (cosa che accade abbastanza spesso), SNMP mette troppo sotto pressione il sistema di destinazione e il software di monitoraggio. Se puoi usare un buon agente leggero per il monitoraggio, fallo. Se non è possibile installare un agente, ma è disponibile una buona API, utilizzala (ad esempio, consigliamo di utilizzare l'API di NetApp per il monitoraggio, poiché è implementata molto meglio del suo agente SNMP). Se non è possibile installare un agente su un dispositivo e non esiste una buona API, utilizzare SNMP.
Come monitorare via SNMP in Checkmk
Checkmk supporta il monitoraggio tramite SNMP per molti dispositivi diversi, ad esempio switch di rete, router, UPS e dispositivi di alimentazione, dispositivi NAS, stampanti, ecc. Non offriamo solo controlli generici per questi dispositivi. Negli ultimi anni abbiamo scritto molti controlli specifici con l'aiuto dei nostri clienti. I clienti ci hanno fornito suggerimenti e consigli preziosi per assicurarci di monitorare le cose giuste e di impostare soglie predefinite che abbiano senso.
Supponendo che il DNS funzioni correttamente, è sufficiente inserire il nome host di un nuovo dispositivo e la comunità (v1, v2c) o le password del dispositivo per l'autenticazione e la crittografia (v3). Checkmk determinerà quindi i controlli corretti per quel dispositivo e rileverà automaticamente i servizi, senza bisogno di configurare altro.

Per sapere se Checkmk supporta un dispositivo, consulta il Catalogo dei plug-in di Check. Fare clic su una voce dell'elenco per ottenere informazioni dettagliate sull'agente supportato (agente Checkmk, API del fornitore, SNMP). Checkmk può anche gestire le trappole SNMP utilizzando la Console eventi. Per ulteriori informazioni al riguardo, consultare il nostro manuale utente.
Continuare
Ora conoscete le diverse versioni del protocollo, gli OID e le MIB. Abbiamo anche spiegato come utilizzare Checkmk per monitorare tutti i tipi di dispositivi con SNMP. Anche se è stato bello sproloquiare un po' su SNMP o piuttosto sull'implementazione di questo protocollo da parte di qualche fornitore, una cosa è certa: SNMP svolge un ruolo importante nel monitoraggio dei dispositivi fisici e probabilmente continuerà a farlo ancora per un po'. Le cose sarebbero molto peggiori senza SNMP: è solo un male necessario con cui dobbiamo convivere.
Questo è il primo articolo di una serie di blogpost sul monitoraggio di rete SNMP. Restate sintonizzati per altri #monitoringlove.