Se encuentra viendo la documentación de la versión en desarrollo, puede estar incompleta.
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 OIDs 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 Zabbix server/proxy 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 sobre 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, añada un paso de preprocesamiento con el nombre "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, añada 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 último valor (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}, representando 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 del elemento 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 de SNMP walk a JSON, el resultado podría parecerse a:

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

Una plantilla de elemento dependiente utiliza la macro {#SNMPINDEX} para construir la clave:

net.if.in[{#SNMPINDEX}]

El preprocesamiento para esta plantilla 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 plantilla de disparador:

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

El ejemplo de plantilla 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 las plantillas 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.