1 Indici dinamici
Panoramica
Sebbene sia possibile trovare il numero di indice richiesto (ad esempio, di un'interfaccia di rete) tra gli OID SNMP, a volte non è possibile fare completo affidamento sul fatto che il numero di indice rimanga sempre lo stesso.
I numeri di indice possono essere dinamici: possono cambiare nel tempo e, di conseguenza, il tuo item potrebbe smettere di funzionare.
Per evitare questo scenario, è possibile definire un OID che tenga conto della possibilità che un numero di indice cambi.
Ad esempio, se devi recuperare il valore dell'indice da aggiungere a ifInOctets che corrisponde all'interfaccia GigabitEthernet0/1 su un dispositivo Cisco, utilizza il seguente OID:
ifInOctets["index","ifDescr","GigabitEthernet0/1"]
La sintassi
Viene utilizzata una sintassi speciale per l'OID:
<OID dei dati>["index","<OID di base dell'indice>","<stringa da cercare>"]
| Parametro | Descrizione |
|---|---|
| OID dei dati | OID principale da utilizzare per il recupero dei dati nell'item. |
| index | Metodo di elaborazione. Attualmente è supportato un solo metodo: index - cerca l'indice e lo aggiunge all'OID dei dati |
| OID di base dell'indice | Questo OID verrà cercato per ottenere il valore dell'indice corrispondente alla stringa. |
| stringa da cercare | La stringa da utilizzare per una corrispondenza esatta con un valore durante la ricerca. Sensibile alle maiuscole e minuscole. |
Esempio
Ottenere l'utilizzo della memoria del processo apache.
Se si utilizza questa sintassi OID:
HOST-RESOURCES-MIB::hrSWRunPerfMem["index","HOST-RESOURCES-MIB::hrSWRunPath", "/usr/sbin/apache2"]
il numero di indice verrà cercato qui:
...
HOST-RESOURCES-MIB::hrSWRunPath.5376 = STRING: "/sbin/getty"
HOST-RESOURCES-MIB::hrSWRunPath.5377 = STRING: "/sbin/getty"
HOST-RESOURCES-MIB::hrSWRunPath.5388 = STRING: "/usr/sbin/apache2"
HOST-RESOURCES-MIB::hrSWRunPath.5389 = STRING: "/sbin/sshd"
...
Ora abbiamo l'indice, 5388. L'indice verrà aggiunto all'OID dei dati per ricevere il valore che ci interessa:
HOST-RESOURCES-MIB::hrSWRunPerfMem.5388 = INTEGER: 31468 KBytes
Cache della ricerca degli indici
Quando viene richiesto un item con indice dinamico, Zabbix recupera e memorizza nella cache l'intera tabella SNMP sotto l'OID di base per l'indice, anche se una corrispondenza verrebbe trovata prima. Questo viene fatto nel caso in cui un altro item faccia riferimento allo stesso OID di base in seguito: Zabbix cercherà l'indice nella cache, invece di interrogare nuovamente il host monitorato. Si noti che ogni processo poller utilizza una cache separata.
In tutte le successive operazioni di recupero dei valori viene verificato solo l'indice trovato. Se non è cambiato, il valore viene richiesto. Se è cambiato, la cache viene ricostruita: ogni poller che rileva un indice modificato esegue nuovamente la scansione della tabella SNMP dell'indice.