SNMP

Gli apparati di rete che rispondono in SNMP v1, v2c o v3 (gruppi di continuità, PDU, switch, router, condizionamento di precisione e sensori ambientali) letti tramite il loro agente all'intervallo di interrogazione di ogni tag: la scheda Agente SNMP, l'OID di un tag in numeri o con il nome standard, i tipi di dato in cui si legge ogni oggetto, lettura e scrittura, il percorso che rileva gli oggetti di un agente e due esempi completi.

Visualizza come Markdown

Il driver SNMP legge e scrive gli apparati di una sala tecnica tramite il loro agente SNMP: gruppi di continuità, PDU, switch, router, condizionamento di precisione e sensori di temperatura o umidità. Completa il driver Redfish, che legge i controller di gestione dei server: insieme coprono la sala tecnica. Ogni tag legge un oggetto dell'agente tramite il suo OID, come upsBatteryStatus.0 o ifHCInOctets.2, e i suoi valori arrivano dove arrivano quelli di ogni altro tag: in Logic, sulle dashboard, nelle prove di un banco di collaudo di Process.

È la stazione a chiedere: ogni tag viene letto al suo intervallo di interrogazione, in SNMPv1, SNMPv2c o SNMPv3, e l'Intervallo di interrogazione (ms) della scheda Dispositivo funziona come in ogni driver, e ogni tag può sostituirlo. Quello che l'apparato manda da sé, le sue trap, non viene ricevuto; vedi Limiti da conoscere.

Un dispositivo di questo driver è un agente, raggiunto sul suo host alla porta UDP 161. I dispositivi stanno sotto il driver e possono essere archiviati in cartelle, Driver → Cartella → Dispositivo → Tag, come sotto ogni driver senza linea seriale né broker.

La pagina del driver

Per Configurare il connector, la pagina porta la scheda Ambito della scansione propria del driver, con l'agente e i sottoalberi che Rileva percorre (vedi Rilevamento). Sotto si trova la tabella Dispositivi di ogni driver (vedi La tabella dei dispositivi), che cresce con Aggiungi dispositivo, a destra del suo titolo; vuota, dice « Nessun dispositivo. » La barra del driver porta Rileva, in grigio finché la scheda Ambito della scansione non è completa.

Dispositivo

Connessione

Campo Significato Predefinito
Indirizzo host Il nome host o l'indirizzo IP dell'agente. vuoto
Porta La porta UDP su cui l'agente risponde, da 1 a 65535. Una casella vuota mostra 161 in grigio e l'agente viene interrogato su di essa. 161

Un dispositivo nuovo non ha host: dice « Indirizzo host non ancora inserito », e non viene inviato nulla finché non ne ha uno. La Base URI che l'intestazione mostra è l'indirizzo di runtime, con la versione, la sicurezza SNMPv3 in vigore, il timeout di risposta e i tentativi aggiuntivi: snmp://192.168.10.40:161?version=2c&timeoutMs=2000&retries=1, oppure snmp://192.168.10.2:161?version=3&security=authPriv&auth=sha256&priv=aes128&timeoutMs=2000&retries=1. Non porta mai la community, l'utente né una password.

La scheda Agente SNMP

Sotto la scheda Connessione, la scheda Agente SNMP dice come viene interrogato l'agente. I campi che disegna seguono la versione e, in SNMPv3, il livello di sicurezza.

Campo Mostrato Significato Predefinito
Versione SNMP sempre SNMPv1, SNMPv2c o SNMPv3, ognuna con una riga sotto. SNMPv1: « SNMPv1 non ha contatori a 64 bit, e un oggetto che manca all'agente fa rifiutare l'intera richiesta, che il driver ripete allora senza di esso. » SNMPv2c: « SNMPv2c legge i contatori a 64 bit, e un oggetto che manca all'agente fa fallire solo quel tag. Lo parlano quasi tutti gli apparati. » SNMPv3: « SNMPv3 si identifica con un utente, e firma e cifra i messaggi secondo il livello di sicurezza. » SNMPv2c
Community SNMPv1, SNMPv2c La community a cui l'agente risponde, al massimo 255 byte, in una casella che nasconde ciò che si scrive; vuota, mostra public come suggerimento, mai come valore. Sotto: « Un agente ignora una richiesta con una community che non accetta, quindi una community sbagliata sembra un agente che non risponde. » vuoto
Utente SNMPv3 SNMPv3 L'utente che l'agente conserva, al massimo 32 caratteri. vuoto
Livello di sicurezza SNMPv3 Firmato e cifrato (authPriv): « Ogni messaggio è firmato con la password di autenticazione e cifrato con la password di cifratura. » Solo firmato (authNoPriv): « Ogni messaggio è firmato con la password di autenticazione e viaggia in chiaro. » Né firmato né cifrato (noAuthNoPriv): « Viene inviato solo il nome utente: niente è firmato e niente è cifrato. » Firmato e cifrato (authPriv)
Protocollo di autenticazione SNMPv3, firmato MD5, SHA-1, SHA-256, SHA-384 o SHA-512. SHA-1
Password di autenticazione SNMPv3, firmato La password che firma i messaggi. vuoto
Protocollo di cifratura SNMPv3, authPriv DES, AES-128, AES-192 o AES-256. AES-128
Password di cifratura SNMPv3, authPriv La password che cifra i messaggi. vuoto
Timeout di risposta (ms) sempre Da 100 a 60000: « Quanto attende una richiesta la risposta dell'agente prima di essere inviata di nuovo. » 2000
Tentativi aggiuntivi sempre Da 0 a 5: « Quante volte una richiesta senza risposta viene inviata di nuovo prima che il dispositivo risulti offline. » 1

Sotto le due password: « Ogni password è quella che l'agente conserva per questo utente, di almeno 8 caratteri. » L'utente, il livello di sicurezza e i due protocolli sono quelli che l'agente ha configurato per quell'utente, nella pagina delle impostazioni dell'apparato stesso: la stazione non può chiederli all'agente. MD5, SHA-1 e DES sono offerti perché molti apparati installati non accettano nulla di più recente.

Una credenziale non ancora inserita non è un errore: il dispositivo viene salvato, il driver non manda nulla all'agente finché non c'è, e una riga pacata sotto la scheda dice cosa manca, la prima di queste:

Manca La scheda dice
La community (SNMPv1, SNMPv2c) « Inserire la community a cui risponde l'agente. Fino ad allora il dispositivo non invia nulla. »
L'utente (SNMPv3) « Inserire l'utente SNMPv3. Fino ad allora il dispositivo non invia nulla. »
La password di autenticazione (authNoPriv, authPriv) « Inserire la password di autenticazione. Fino ad allora il dispositivo non invia nulla. »
La password di cifratura (authPriv) « Inserire la password di cifratura. Fino ad allora il dispositivo non invia nulla. »

Un dispositivo che ha il suo host e a cui manca ancora una credenziale non si connette, e il suo ultimo errore nomina la credenziale che il suo agente aspetta. Un valore che la scheda non accetta non viene salvato, e la scheda dice perché, in rosso:

Scrivi La scheda dice
Una password di autenticazione di meno di 8 caratteri « La password di autenticazione deve avere almeno 8 caratteri. »
Una password di cifratura di meno di 8 caratteri « La password di cifratura deve avere almeno 8 caratteri. »
Un utente di più di 32 caratteri, o una community di più di 255 byte « L'utente ammette al massimo 32 caratteri e la community al massimo 255 byte. »
Un timeout di risposta fuori da 100 a 60000, o tentativi aggiuntivi fuori da 0 a 5 La casella torna al valore in vigore e dice « Immettere un numero compreso tra 100 e 60000. » o « Immettere un numero compreso tra 0 e 5. »

Il salvataggio applica le stesse regole della scheda, e il registro delle azioni lo dice quando ne rifiuta una: « Il dispositivo 'UPS room 1' ha un'impostazione SNMP che il suo driver non può usare. Aprirlo e correggere il campo che il pannello segnala. » La community e le due password sono conservate come ogni credenziale di dispositivo (vedi Credenziali e certificati): protette a riposo per l'account Windows che le ha inserite, sigillate nell'esportazione della configurazione, e mai mostrate nella Base URI, nel diario tecnico né nella risposta di un agente. Una credenziale inserita con un altro account Windows torna vuota, e il dispositivo la aspetta come una mai inserita.

Indirizzamento del tag

L'OID

Un tag di questo driver legge un oggetto del suo agente. La scheda Sorgente del tag porta la casella OID, con il suggerimento « Un OID in numeri, ad esempio 1.3.6.1.2.1.1.3.0, oppure un nome standard con la sua istanza, ad esempio sysUpTime.0, ifInOctets.2 o upsBatteryStatus.0 » sotto. Ogni richiesta porta il numero, qualunque sia la forma in cui il tag è scritto:

Scritto Letto come
1.3.6.1.2.1.1.3.0, .1.3.6.1.2.1.1.3.0, iso.3.6.1.2.1.1.3.0 Quel numero, che il pannello chiama sysUpTime.0.
sysUpTime.0, sysUpTime, SNMPv2-MIB::sysUpTime.0, senza badare a maiuscole e minuscole Un valore singolo, la cui unica istanza .0 si può omettere.
ifInOctets.2 Una colonna di una tabella con l'indice della sua riga, qui l'interfaccia 2, che si scrive sempre.
enterprises.318.1.1.1.2.2.1.0 Un ramo con i numeri che stanno sotto: un oggetto della MIB propria dell'apparato, mostrato con il suo numero.

Sotto la casella, in sola lettura, l'OID nelle due forme:

Lettura Cosa mostra
Nome nella MIB Il nome standard dell'oggetto con la sua istanza (ifInOctets.2), e sotto quello che la MIB dice dell'oggetto: la sua MIB, il tipo di valore che porta e se accetta la scrittura, come IF-MIB · Counter32 · sola lettura o UPS-MIB · Integer32 · accetta la scrittura. « Nessun nome standard » per un oggetto che il driver non conosce per nome.
OID numerico L'OID in numeri, cioè quello che porta ogni richiesta.

Un oggetto senza nome standard aggiunge la riga « Un oggetto della MIB propria dell'apparato: compare con il suo numero, perché nessun file MIB viene letto. » Un tag di cui il driver non può leggere l'OID non viene salvato, e la pagina del tag dice perché:

Scrivi La pagina del tag dice
Nessun OID « OID è obbligatorio per questo driver. »
Un nome che il driver non conosce « Questo nome non è uno degli oggetti MIB standard che il driver conosce. Scrivere l'OID in numeri. »
Una colonna senza la sua riga, come ifInOctets « Una colonna di tabella ha bisogno dell'indice della sua riga, ad esempio ifInOctets.1. »
Un valore singolo con un'istanza diversa da 0, come sysUpTime.1 « Un valore singolo ha una sola istanza, .0, che si può omettere. »
Un ramo da solo, come enterprises o ifTable « Un ramo dell'albero non nomina alcun valore. Scrivere i numeri dell'oggetto che sta sotto. »
Un primo numero oltre 2, un secondo di 40 o più, più di 128 numeri, o un numero oltre 4294967295 « Un OID inizia con 0, 1 o 2 e un numero sotto 40, e ha al massimo 128 numeri fino a 4294967295. »
Qualsiasi altra cosa che non sia un OID « Scrivere l'OID in numeri, ad esempio 1.3.6.1.2.1.1.3.0, oppure un nome standard con la sua istanza, ad esempio sysUpTime.0. »

Il salvataggio applica la stessa regola: « Il tag 'Battery status' non nomina alcun OID che il driver SNMP possa leggere. Aprirlo e correggere l'indirizzo che il pannello del tag segnala. » La riga in sola lettura Indirizzo di origine (bus) mostra il numero che il driver riceve: 1.3.6.1.2.1.33.1.2.1.0 per un tag scritto upsBatteryStatus.0.

I nomi che il driver conosce

Il driver porta una tabella degli oggetti delle MIB standard che vale la pena nominare, scritta a partire dalle RFC, così un nome significa la stessa cosa su ogni stazione. Nessun file MIB viene letto.

MIB Cosa nomina
SNMPv2-MIB (RFC 3418) Il gruppo system: sysDescr, sysObjectID, sysUpTime, sysContact, sysName, sysLocation, sysServices.
IF-MIB (RFC 2863) ifNumber, la tabella delle interfacce (ifDescr, ifOperStatus, ifInOctets, ifOutErrors e il resto) e la sua estensione con i contatori a 64 bit (ifName, ifHCInOctets, ifHCOutOctets, ifHighSpeed, ifAlias).
UPS-MIB (RFC 1628) L'identità, la batteria, l'ingresso, l'uscita, il bypass, gli allarmi, il test, il controllo e la configurazione di un gruppo di continuità: upsBatteryStatus, upsEstimatedChargeRemaining, upsOutputSource, upsOutputPercentLoad e il resto.
ENTITY-SENSOR-MIB (RFC 3433) La tabella dei sensori: entPhySensorType, entPhySensorScale, entPhySensorValue, entPhySensorOperStatus e il resto.
ENTITY-MIB (RFC 6933) Il nome, la descrizione e la classe di un'entità fisica, che etichettano un sensore: entPhysicalName, entPhysicalDescr, entPhysicalClass.
HOST-RESOURCES-MIB (RFC 2790) Il sistema (hrSystemUptime, hrSystemProcesses), la tabella dello storage (hrStorageUsed) e la tabella dei processori (hrProcessorLoad).

driver_capabilities elenca ogni nome con il suo OID; vedi Strumenti dell'agente.

Tipi di dato e accesso

L'elenco Tipo di dato offre solo ciò in cui l'oggetto si legge senza perdita:

L'oggetto porta Si legge più naturalmente come Offerti anche
Integer32, enumerazioni e TruthValue compresi Int32 Int64, Float, Double, String
Counter32, Gauge32, TimeTicks (centesimi di secondo) UInt32 Int64, Double, String
Counter64 UInt64 Double, String
DisplayString String
Byte, un indirizzo IP o un OID String: i byte in esadecimale (00:1A:2B), l'indirizzo puntato, l'OID puntato
Un oggetto senza nome standard Float Int32, UInt32, Int64, UInt64, Double, String: decide la risposta dell'agente alla lettura

Un contatore non viene offerto come Float, che arrotonda oltre 16.777.216, né un Counter64 come Int64, che rifiuterebbe un conteggio oltre la sua metà. Boolean non viene mai offerto: SNMP non ha booleani, e il suo TruthValue (1 vero, 2 falso) e lo 0 e l'1 propri di un apparato leggerebbero lo stesso tipo in due modi opposti, quindi uno stato si legge come Int32. Quando l'OID cambia, un tipo in cui il nuovo oggetto non si legge diventa quello in cui si legge più naturalmente; e un tipo in cui non si legge viene rifiutato, nominando quelli in cui si legge: « ifHCOutOctets.2 si legge come uno di questi: UInt64, Double, String. »

Un oggetto standard che la sua MIB dichiara di sola lettura (i contatori, sysUpTime, gli stati) viene offerto solo come Sola lettura, e il campo Accesso dice « Sola lettura: il dispositivo riporta questo valore e nulla dall'esterno lo imposta. » Un oggetto standard che la sua MIB dichiara scrivibile (sysContact, sysName, sysLocation, ifAdminStatus, ifAlias, gli oggetti di test, controllo e configurazione della UPS-MIB) e un oggetto della MIB propria dell'apparato ricevono ogni accesso: se l'agente accetta la scrittura è una sua risposta.

Lettura

All'intervallo di interrogazione di ogni tag, la stazione manda un GET. Quello che l'agente risponde decide cosa mostra il tag (vedi La catena di conversione):

L'agente risponde Cosa fa la lettura
Il valore Il valore, nel tipo del tag, prima che le fasi del tag stesso lo convertano. Un testo che contiene un numero (23.5, che alcuni apparati scrivono) si legge in un tag numerico.
Un valore che il tipo del tag non può contenere, come un numero negativo in un UInt32 Una lettura fallita di quel tag, con il motivo; il dispositivo continua a leggere gli altri tag.
noSuchObject o noSuchInstance, o un errore su quel solo oggetto Una lettura fallita di quel tag, nominata con la risposta dell'agente; il dispositivo continua a leggere gli altri tag. In SNMPv1, dove un oggetto mancante fa rifiutare l'intera richiesta, il driver richiede senza di esso.
Nulla entro il timeout di risposta, dopo tutti i tentativi aggiuntivi Silenzio: il dispositivo va offline e si riconnette, e la politica del tag per un dispositivo che non ha risposto decide cosa mostra. La causa nomina l'agente, l'attesa e i tentativi, e ricorda che un agente tace anche davanti a una community o a un utente SNMPv3 che non accetta.
Un report SNMPv3 (un utente sconosciuto, una password o un protocollo sbagliati, un livello di sicurezza che l'agente non accetta), o la risposta dell'host che nessun agente ascolta sulla porta Un errore di connessione con quella causa, nel diario tecnico e nell'ultimo errore del dispositivo; il dispositivo si riconnette.

Un dispositivo fa una richiesta alla volta. Una lettura chiede l'oggetto del tag e, nella stessa richiesta, gli altri tag del dispositivo che non hanno una risposta recente, fino a 32 OID; a un agente che risponde che la richiesta è troppo grande (tooBig) ne viene mandata la metà da quel momento. Una risposta portata così serve la lettura di un altro tag finché è più recente della metà dell'intervallo di interrogazione di quel tag, così quaranta tag costano una o due richieste per passata. Il motore di un agente SNMPv3 viene appreso una volta per connessione, e una richiesta che l'agente dichiara fuori dalla sua finestra temporale viene inviata ancora una volta con i valori dell'agente stesso.

Scrittura

Un tag il cui accesso scrive manda un SET attraverso la coda del dispositivo. Una scrittura passa per lo stesso imbuto di quella di ogni altro driver: la casella di scrittura prende il valore ingegneristico, e le fasi di conversione vengono invertite prima che il valore grezzo sia inviato (vedi Connector). Il SET porta il tipo di valore con cui l'agente ha risposto per ultimo all'oggetto; in mancanza, quello che dichiara la sua MIB; in mancanza ancora, quello che risponde ora un GET; e per ultimo quello del tag stesso (un Int32 come Integer32, un UInt32 come Gauge32, uno String come OCTET STRING). Un valore che quel tipo non può contenere viene rifiutato prima di inviare qualsiasi cosa.

L'agente risponde Cosa riporta la scrittura
Nessun errore Fatto. Ogni risposta che il dispositivo conservava viene dimenticata, così la lettura seguente chiede di nuovo.
Uno stato di errore « Scrittura rifiutata dall'apparecchiatura: <reason>. », con il motivo che nomina lo stato come lo scrive l'RFC 3416, come notWritable (17), wrongType (7) o wrongValue (10), e readOnly (4) in SNMPv1.
Nulla entro il timeout di risposta, dopo tutti i tentativi aggiuntivi « Scrittura non confermata: l'apparecchiatura non ha risposto in tempo. »

Rilevamento

La scheda Ambito della scansione

Per Configurare il connector, la pagina del driver porta la sua scheda Ambito della scansione, sotto la riga « Percorre i sottoalberi standard di un agente ed elenca ciò che trova. Un agente SNMPv3 si scansiona tramite il suo dispositivo: sceglilo come agente da scansionare. »

Campo Significato Predefinito
Agente da scansionare Un indirizzo scritto qui, o un dispositivo del driver con il suo nome. L'agente di un dispositivo viene letto con l'host, la porta, la versione, le impostazioni e le credenziali come sono salvati, e una modifica del dispositivo che aspetta ancora di essere salvata viene salvata prima. È l'unico modo di scansionare un agente SNMPv3. Un indirizzo scritto qui
Indirizzo dell'agente Un agente scritto: il nome host o l'indirizzo IP, e la porta dopo i due punti quando non è quella sotto. vuoto
Porta Un agente scritto: da 1 a 65535. 161
Versione SNMP Un agente scritto: SNMPv1 o SNMPv2c. SNMPv2c
Community Un agente scritto: la community a cui risponde, in una casella che nasconde ciò che si scrive, con public come suggerimento. Sotto: « Usata solo per questa scansione. Un dispositivo aggiunto dal risultato la conserva come sua community. » vuoto
Sottoalberi Una spunta ciascuno: Sistema (SNMPv2-MIB), Interfacce (IF-MIB), Gruppo di continuità (UPS-MIB), Sensori (ENTITY-SENSOR-MIB) e Risorse dell'host (HOST-RESOURCES-MIB). tutti tranne Risorse dell'host
Percorri anche « Un sottoalbero in più, in numeri o sotto un nome standard, ad esempio enterprises.318. Gli oggetti propri dell'apparato tornano come numeri. » vuoto

Quello che ancora manca all'ambito viene detto in rosso sotto la scheda, e Rileva resta in grigio finché non è completo:

L'ambito La scheda dice
Un agente scritto senza indirizzo « Scrivere l'indirizzo dell'agente SNMP da scansionare. »
Un agente scritto il cui indirizzo non è un host « 'http://192.168.0.30' non è l'indirizzo di un agente SNMP. Scrivere il suo nome host o il suo indirizzo IP, con la porta se serve, per esempio 192.168.0.30 o 192.168.0.30:161. »
Un agente scritto senza community, o con una di più di 255 byte « Scrivere la community a cui risponde l'agente, al massimo 255 byte. »
Un dispositivo che non esiste più « Il dispositivo SNMP scelto per la scansione non esiste più. Scegliere un altro agente da scansionare. »
Un dispositivo senza il suo host o senza una credenziale che serve al suo agente « Al dispositivo 'UPS room 1' mancano ancora l'host o una credenziale che serve al suo agente. Completa prima la sua scheda SNMP. »
Un sottoalbero da percorrere che non è un OID « 'vendor' non è un OID da percorrere. Scriverlo in numeri o sotto un nome standard, ad esempio enterprises.318. »
Niente spuntato e niente indicato « Spuntare almeno un sottoalbero, o indicarne uno da percorrere. »

Quando il dispositivo da scansionare ha una modifica che non si può salvare, la scansione non parte: « Il rilevamento non è partito perché non è stato possibile salvare la modifica del dispositivo da scansionare. »

Cosa offre la scansione

Rileva chiede prima all'agente il suo nome (sysName.0), il che prova anche che l'agente risponde a quelle credenziali, poi percorre ogni sottoalbero spuntato e quello indicato, con GETBULK in SNMPv2c e SNMPv3 e GETNEXT in SNMPv1, finché l'agente non risponde fuori di esso. La riga di avanzamento conta quello che ha letto: « Percorso dell'agente SNMP a 192.168.10.40:161: 120 oggetti trovati. » Una scansione elenca al massimo 2000 oggetti e percorre per al massimo 60 secondi; quando viene interrotta lì, o quando l'agente tace a metà, conserva quello che ha trovato e lo dice: « Il percorso di 192.168.10.40:161 si è fermato prima della fine, con 2000 oggetti trovati. Una scansione elenca al massimo 2000 oggetti, percorre per al massimo 60 s e si ferma dove l'agente tace. »

La scansione offre un candidato per agente, chiamato con il suo sysName (il nome del dispositivo o l'host quando l'agente non ne dà), con la versione, il timeout e i tentativi aggiuntivi con cui è stato letto, e gli oggetti trovati come tag candidati:

Oggetto trovato Nome del tag Tipo di dato Accesso
Un valore singolo che il driver conosce per nome Il suo nome, senza il .0: sysUpTime Quello in cui il valore risposto si legge più naturalmente Lettura e scrittura dove la sua MIB lo dichiara scrivibile, Sola lettura negli altri casi
Una colonna di una tabella che il driver conosce per nome Il suo nome e la sua riga: ifInOctets.2 Lo stesso Lo stesso
Un oggetto della MIB propria dell'apparato Il suo numero: 1.3.6.1.4.1.318.1.1.1.2.2.1.0 Lo stesso Sola lettura

Un valore che nessun tipo di tag può contenere viene lasciato fuori. Un dispositivo aggiunto da una scansione scritta conserva la community usata dalla scansione, protetta come ogni credenziale di dispositivo; un dispositivo aggiunto dalla scansione di un dispositivo porta le credenziali di quel dispositivo. Un candidato il cui agente è già letto da un dispositivo del driver (il dispositivo scansionato, o un altro allo stesso host e alla stessa porta) viene segnato Già configurato: la sua scheda elenca solo gli oggetti che nessun tag di quel dispositivo legge ancora, e un OID scritto con il nome e con il numero conta come lo stesso, e Aggiungi i tag, prima di Apri, aggiunge quelli spuntati a quel dispositivo. Il resto del comportamento della scansione è in Rilevamento.

La pagina stessa di un dispositivo fa lo stesso senza la pagina del suo driver: Rileva tag, nell'intestazione della sua scheda Tag, percorre l'agente di quel dispositivo con le sue impostazioni e credenziali, sui sottoalberi standard e sul ramo del produttore che i suoi tag leggono già (enterprises.318 per un tag sotto di esso), e offre solo gli oggetti per cui non ha ancora un tag (vedere Rilevare i tag di un dispositivo).

Esempio: un gruppo di continuità in SNMPv2c

Un gruppo di continuità con scheda di rete risponde in SNMPv2c a 192.168.10.40, con una community di lettura impostata su quella scheda. Per leggerne la batteria:

  1. Nella pagina del driver, Aggiungi dispositivo; chiamarlo UPS room 1, scrivere Indirizzo host 192.168.10.40 e lasciare Porta 161.
  2. Nella scheda Agente SNMP lasciare SNMPv2c, scrivere la community di lettura della scheda in Community, e lasciare un Timeout di risposta (ms) di 2000 e 1 in Tentativi aggiuntivi. La riga che chiedeva la community sparisce.
  3. Aggiungi tag Battery status, OID upsBatteryStatus.0, Tipo di dato Int32. Sotto la casella, il nome nella MIB dice upsBatteryStatus.0 con UPS-MIB · Integer32 · sola lettura, l'OID numerico 1.3.6.1.2.1.33.1.2.1.0, e l'accesso resta Sola lettura. Il valore è 1 unknown, 2 batteryNormal, 3 batteryLow o 4 batteryDepleted.
  4. Aggiungi tag Battery charge, OID upsEstimatedChargeRemaining.0, Tipo di dato Int32, Unità %.
  5. Se il gruppo di continuità lo riporta, Aggiungi tag Minutes remaining, OID upsEstimatedMinutesRemaining.0, Tipo di dato Int32, Unità min.

La Base URI si legge snmp://192.168.10.40:161?version=2c&timeoutMs=2000&retries=1. Un agente fa lo stesso con gli strumenti:

device_upsert name="UPS room 1" driver=Snmp host=192.168.10.40 snmpVersion=V2c snmpCommunity="<the UPS card's read community>"
tag_upsert device="UPS room 1" name="Battery status" address=upsBatteryStatus.0 opcUaType=Int32
tag_upsert device="UPS room 1" name="Battery charge" address=upsEstimatedChargeRemaining.0 opcUaType=Int32 unit=%
tag_upsert device="UPS room 1" name="Minutes remaining" address=upsEstimatedMinutesRemaining.0 opcUaType=Int32 unit=min

Esempio: i contatori di interfaccia di uno switch in SNMPv3

Uno switch gestito a 192.168.10.2 risponde in SNMPv3 per l'utente scada, configurato sullo switch con autenticazione SHA-256 e cifratura AES-128. Per leggere il traffico e lo stato della sua porta 2:

  1. Aggiungi dispositivo; chiamarlo Core switch, Indirizzo host 192.168.10.2, Porta 161.
  2. Nella scheda Agente SNMP scegliere SNMPv3, scrivere scada in Utente SNMPv3, lasciare Firmato e cifrato (authPriv), scegliere SHA-256 in Protocollo di autenticazione e scrivere la sua password, lasciare AES-128 in Protocollo di cifratura e scrivere la sua password: ognuna quella che lo switch conserva per scada, di almeno 8 caratteri.
  3. Aggiungi tag Port 2 in, OID ifHCInOctets.2. Il tipo di dato diventa UInt64, il tipo in cui si legge un contatore a 64 bit, e l'elenco offre solo UInt64, Double e String; Unità B.
  4. Aggiungi tag Port 2 out, OID ifHCOutOctets.2, UInt64, Unità B.
  5. Aggiungi tag Port 2 state, OID ifOperStatus.2, Tipo di dato Int32: 1 up, 2 down, 3 testing, 7 lowerLayerDown.

Il .2 è l'indice dell'interfaccia sullo switch, quello che nomina ifName.2; una scansione del sottoalbero delle interfacce elenca ogni interfaccia con il suo indice. La Base URI si legge snmp://192.168.10.2:161?version=3&security=authPriv&auth=sha256&priv=aes128&timeoutMs=2000&retries=1. Con gli strumenti, un opcUaType in cui l'oggetto non si legge, come Int32 su ifHCOutOctets.2, viene rifiutato con i tipi in cui si legge:

device_upsert name="Core switch" driver=Snmp host=192.168.10.2 snmpVersion=V3 username=scada password="<authentication password>" snmpSecurityLevel=AuthPriv snmpAuthProtocol=Sha256 snmpPrivacyProtocol=Aes128 snmpPrivacyPassword="<privacy password>"
tag_upsert device="Core switch" name="Port 2 in" address=ifHCInOctets.2 opcUaType=UInt64 unit=B
tag_upsert device="Core switch" name="Port 2 out" address=ifHCOutOctets.2 opcUaType=UInt64 unit=B
tag_upsert device="Core switch" name="Port 2 state" address=ifOperStatus.2 opcUaType=Int32

Strumenti dell'agente

driver_capabilities descrive questo driver sotto snmp: le versioni e le credenziali che ognuna prende, i livelli di sicurezza e i protocolli, il timeout di risposta e i tentativi aggiuntivi, come si scrive un OID, i tipi per genere di valore, ogni nome che il driver conosce con la sua MIB, il suo OID e se accetta la scrittura, come si comportano letture e scritture, il rilevamento e i due esempi sopra. device_upsert driver=Snmp prende host, port (161 di default), snmpVersion (V1, V2c, il default, o V3), snmpCommunity in SNMPv1 e SNMPv2c ('' la cancella), e in SNMPv3 username (l'utente), password (la sua password di autenticazione, di almeno 8 caratteri), snmpSecurityLevel (AuthPriv, il default, AuthNoPriv o NoAuthNoPriv), snmpAuthProtocol (Md5, Sha1, il default, Sha256, Sha384 o Sha512), snmpPrivacyProtocol (Des, Aes128, il default, Aes192 o Aes256) e snmpPrivacyPassword; con responseTimeoutMs (da 100 a 60000, 2000 di default) e snmpRetries (da 0 a 5, 1 di default). Una community su un dispositivo SNMPv3, o un campo SNMPv3 su un dispositivo a community, viene rifiutato. Un dispositivo che gli strumenti restituiscono porta snmp: la versione, hasCommunity, il livello di sicurezza e i protocolli in vigore, hasPrivacyPassword, il timeout, i tentativi aggiuntivi e missingCredential, la credenziale che aspetta ancora; nessun segreto viene mai restituito. tag_upsert prende l'OID come address e opcUaType, che di default è il tipo in cui l'oggetto si legge più naturalmente; wireQuantity e eipPath vengono rifiutati. device_discover driver=Snmp percorre o target (un host, con port quando non è 161) con snmpVersion (V1 o V2c) e snmpCommunity, o snmpDevice, il nome di un dispositivo del driver, che è l'unico modo di scansionare un agente SNMPv3; snmpSubtrees sceglie i sottoalberi standard (System, Interfaces, Ups, Sensors, HostResources, separati da virgole) e snmpSubtree ne aggiunge uno. Gli strumenti non conservano la community di una scansione: un dispositivo creato da quello che la scansione ha trovato la riceve di nuovo in device_upsert, e i tag che mancano a un dispositivo configurato si aggiungono con tag_upsert. Gli altri strumenti sono in Strumenti dell'agente.

Limiti da conoscere

  • Le trap e gli inform, quello che l'apparato manda da sé quando succede qualcosa, non vengono ricevuti: ogni valore viene letto al suo intervallo di interrogazione, quindi una batteria che si scarica si vede alla lettura seguente del suo stato.
  • Nessun file MIB viene importato. I nomi che il driver conosce sono quelli delle MIB standard che porta; un oggetto della MIB propria dell'apparato, sotto enterprises, si scrive e si mostra con il suo numero, e cosa significa si legge nella documentazione del costruttore.
  • La stazione non è un agente SNMP: niente legge la stazione stessa in SNMP.
  • Una scansione raggiunge un agente SNMPv3 solo tramite un dispositivo che conserva il suo utente e le sue password, e non prova da sé alcuna community né alcun utente.
  • Una scansione elenca al massimo 2000 oggetti e percorre per al massimo 60 secondi: su uno switch grande, togli la spunta ai sottoalberi che non servono, o indica quello che serve.
  • Nessun tag è un Boolean: un TruthValue o un acceso e spento proprio dell'apparato si legge come Int32.