Si bien puede encontrar el número de índice requerido (por ejemplo, de una interfaz de red) entre los OID de SNMP, a veces puede que no confíe completamente en que el número de índice siempre permanezca igual.
Los números de índice pueden ser dinámicos: pueden cambiar con el tiempo y, como consecuencia, su métrica puede dejar de funcionar.
Para evitar este escenario, es posible definir un OID que tenga en cuenta la posibilidad de que el número de índice cambie.
Por ejemplo, si necesita recuperar el valor de índice para agregar a ifInOctets que corresponde a la interfaz GigabitEthernet0/1 en un dispositivo Cisco, utilice el siguiente OID:
Se utiliza una sintaxis especial para OID:
<OID de datos>["índice","<OID base del índice>","<cadena a buscar>"]
| Parámetro | Descripción |
|---|---|
| OID de datos | OID principal a utilizar para la obtención de datos en la métrica. |
| índice | Método de procesamiento. Actualmente se admite un método: index – buscar el índice y añadirlo al OID de datos |
| OID base del índice | Este OID se buscará para obtener el valor de índice correspondiente a la cadena. |
| cadena a buscar | La cadena a utilizar para una coincidencia exacta con un valor al realizar la búsqueda. Sensible a mayúsculas y minúsculas. |
Obteniendo el uso de memoria del proceso apache.
Si se utiliza esta sintaxis de OID:
el número de índice se buscará aquí:
...
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"
...Ahora tenemos el índice, 5388. El índice se añadirá al OID de datos para obtener el valor que nos interesa:
Cuando se solicita una métrica de índice dinámico, Zabbix recupera y almacena en caché toda la tabla SNMP bajo el OID base para el índice, incluso si se encontrara una coincidencia antes. Esto se hace en caso de que otra métrica haga referencia al mismo OID base más adelante: Zabbix buscaría el índice en la caché, en lugar de consultar nuevamente al equipo monitorizado. Tenga en cuenta que cada proceso poller utiliza una caché separada.
En todas las operaciones de recuperación de valores posteriores, solo se verifica el índice encontrado. Si no ha cambiado, se solicita el valor. Si ha cambiado, se reconstruye la caché: cada poller que detecta un índice cambiado recorre nuevamente la tabla SNMP de índices.