Esta página fue traducida automáticamente. Si detectas un error, selecciónalo y presiona Ctrl+Enter para informarlo a los editores.

4 Descubrimiento de OID SNMP

Descripción general

En esta sección realizaremos un descubrimiento de bajo nivel en un dispositivo SNMP.

Este método de descubrimiento de OIDs SNMP es compatible desde el servidor/proxy Zabbix 6.4.

Configuración de ejemplo

1. Cree un elemento de agente SNMP con una clave como:

walk[.1.3.6.1.4.1.9999.1.1.1.1]

Este elemento realiza una única consulta SNMP walk a la tabla y devuelve todas las entradas de la tabla en una sola solicitud, en un formato que corresponde a la salida de la utilidad snmpwalk con las opciones de formato -Oe -Ot -On.

Devolverá el siguiente valor de texto multilínea:

.1.3.6.1.4.1.9999.1.1.1.1.1.1 = STRING: "Temperature Sensor"
       .1.3.6.1.4.1.9999.1.1.1.1.2.1 = STRING: "temp"
       .1.3.6.1.4.1.9999.1.1.1.1.3.1 = 100
       .1.3.6.1.4.1.9999.1.1.1.1.1.2 = STRING: "Humidity Sensor"
       .1.3.6.1.4.1.9999.1.1.1.1.2.2 = STRING: "humidity"
       .1.3.6.1.4.1.9999.1.1.1.1.3.2 = 200

2. Cree una regla de descubrimiento:

  • En el campo Nombre, introduzca un nombre descriptivo para la regla de descubrimiento (por ejemplo, "Descubrir sensores").
  • En el campo Tipo, seleccione "Elemento dependiente".
  • En el campo Clave, introduzca una clave descriptiva (por ejemplo, "net.if.discovery").
  • En el campo Elemento principal, seleccione "Elemento SNMP walk".

3. En la pestaña Preprocesamiento, agregue un paso de preprocesamiento con "SNMP walk a JSON" en el desplegable Nombre con 3 parámetros:

  • Nombre de campo: "{#SENSORNAME}"; Prefijo OID: ".1.3.6.1.4.1.9999.1.1.1.1.1": Formato: "Sin cambios".
  • Nombre de campo: "{#SENSORTYPE}"; Prefijo OID: ".1.3.6.1.4.1.9999.1.1.1.1.2": Formato: "Sin cambios".
  • Nombre de campo: "{#SENSORVALUE}"; Prefijo OID: ".1.3.6.1.4.1.9999.1.1.1.1.3": Formato: "Sin cambios".

Después del preprocesamiento, la regla de descubrimiento devuelve un array JSON de conjuntos de macros.

Por ejemplo:

[
           {
               "{#SNMPINDEX}": "1",
               "{#SENSORNAME}": "Temperature Sensor",
               "{#SENSORTYPE}": "temp",
               "{#SENSORVALUE}": "100"
           },
           {
               "{#SNMPINDEX}": "2",
               "{#SENSORNAME}": "Humidity Sensor",
               "{#SENSORTYPE}": "humidity",
               "{#SENSORVALUE}": "200"
           }
       ]

Cada objeto representa un sensor descubierto y proporciona macros como {#SNMPINDEX}, {#SENSORNAME}, {#SENSORTYPE} y {#SENSORVALUE}.

Se agrupan por el índice SNMP, que es el sufijo numérico al final de cada OID (por ejemplo, .1, .2): este índice identifica de forma única cada fila en la tabla SNMP y se extrae automáticamente como {#SNMPINDEX}.

4. Bajo la regla de descubrimiento, cree uno o más prototipos de elementos (con la regla de descubrimiento como elemento principal).

Por ejemplo, elemento dependiente para el valor del sensor:

  • En el campo Nombre, introduzca "Sensor {#SNMPINDEX}: {#SENSORNAME}".
  • En el campo Tipo, seleccione "Elemento dependiente".
  • En el campo Clave, introduzca "sensor.value[{#SNMPINDEX}]".
  • En el campo Elemento principal, seleccione "Elemento SNMP walk".

En la pestaña Preprocesamiento, agregue un paso de preprocesamiento con el nombre "Valor SNMP walk" con el OID ".1.3.6.1.4.1.9999.1.1.1.1.3.{#SNMPINDEX}" en el campo Parámetro. Formato: "Sin cambios".

Se descubrirán los siguientes elementos:

Nombre Clave OID del que se extrae el valor Valor del elemento
Sensor 1: Temperature Sensor sensor.value[1] .1.3.6.1.4.1.9999.1.1.1.1.3.1 100
Sensor 2: Humidity Sensor sensor.value[2] .1.3.6.1.4.1.9999.1.1.1.1.3.2 200

Cuando se ejecuta la regla de descubrimiento, se crean elementos como sensor.value[1], sensor.value[2].

Cada elemento dependiente extrae su valor del resultado SNMP walk del elemento principal utilizando el preprocesamiento, sin realizar solicitudes SNMP independientes.

5. Haga referencia a los prototipos de elementos dependientes en los prototipos de disparadores utilizando las mismas macros de la regla de descubrimiento. Ejemplo:

{Template_Sensor:sensor.value[{#SNMPINDEX}].last()} > 75

Esto produce un disparador para cada sensor descubierto (por ejemplo, sensor.value[1], sensor.value[2]) y se activa si el valor más reciente (temperatura o humedad) supera 75.

6. Incluya elementos dependientes para cada entidad descubierta. Ejemplo de clave de elemento de gráfico:

sensor.value[{#SNMPINDEX}]

Se crea un gráfico por {#SNMPINDEX}, graficando temperatura y humedad a lo largo del tiempo.

Esta configuración realiza solo una solicitud SNMP walk por ciclo de sondeo, independientemente del número de elementos descubiertos. Todos los elementos dependientes extraen sus valores del resultado SNMP walk principal utilizando el preprocesamiento, lo que reduce significativamente el tráfico y la carga SNMP.

Índices dinámicos con walk[]

Los índices dinámicos (por ejemplo, los índices de interfaz) pueden cambiar cuando se reconfigura el hardware. Para adaptarse a este comportamiento, se crea una regla maestra de descubrimiento SNMP walk con una clave como:

walk[1.3.6.1.2.1.2.2.1.10]

Después del preprocesamiento SNMP walk a JSON, el resultado podría parecerse a:

[
           {
               "{#SNMPINDEX}": "2",
               "{#VALUE}": "123456"
           },
           {
               "{#SNMPINDEX}": "3",
               "{#VALUE}": "654321"
           }
       ]

Un prototipo de elemento dependiente utiliza la macro {#SNMPINDEX} para construir la clave:

net.if.in[{#SNMPINDEX}]

El preprocesamiento para este prototipo incluye el nombre "Valor de SNMP walk" con el OID "1.3.6.1.2.1.2.2.1.10.{#SNMPINDEX}" en el campo Parámetro. Formato: "Sin cambios".

En tiempo de ejecución, se crean elementos reales como net.if.in[2] y net.if.in[3]. Si un índice de interfaz dado cambia (por ejemplo, si el índice 2 es reemplazado por 5 en la tabla SNMP), entonces en la siguiente ejecución de la regla de descubrimiento:

  • El elemento dependiente antiguo net.if.in[2] se marca como "perdido" o se elimina, y no se recopilan nuevos datos para ese elemento.
  • Se crea un nuevo elemento dependiente net.if.in[5], comenzando con un historial vacío.
  • Los datos históricos de net.if.in[2] no se trasladan automáticamente a net.if.in[5].

Ejemplo de prototipo de disparador:

{Template_Interface:net.if.in[{#SNMPINDEX}].last()} > 1000000000

El ejemplo de prototipo de gráfico incluye los elementos:

net.if.in[{#SNMPINDEX}]
       net.if.out[{#SNMPINDEX}]

Esta configuración garantiza una monitorización fiable de tablas con índices dinámicos mientras se minimiza el tráfico SNMP: solo se requiere un único SNMP walk por ciclo de sondeo, y los prototipos de elementos dependientes extraen los valores necesarios.

Entidades descubiertas

Cuando el servidor se ejecuta, creará elementos dependientes reales, disparadores y gráficos basados en los valores que devuelve la regla de descubrimiento SNMP.