2 Agente SNMP

Descripción general

Es posible que desee utilizar la supervisión SNMP en dispositivos como impresoras, conmutadores de red, enrutadores o UPS que normalmente están habilitados para SNMP y en los que no sería práctico intentar configurar sistemas operativos completos y agentes de Zabbix.

Para poder recuperar los datos proporcionados por los agentes SNMP en estos dispositivos, el servidor Zabbix debe ser configurado inicialmente con compatibilidad con SNMP especificando el indicador --with-net-snmp.

Las comprobaciones SNMP se realizan únicamente a través del protocolo UDP.

El servidor Zabbix y los demonios proxy registran líneas similares a las mostradas a continuación si reciben una respuesta SNMP incorrecta:

La respuesta SNMP de la "puerta de enlace" del host no contiene todos los enlaces de variables solicitados

Si bien no cubren todos los casos problemáticos, son útiles para identificar dispositivos SNMP individuales para los cuales se deben desactivar las solicitudes combinadas.

El servidor/proxy Zabbix siempre volverá a intentarlo al menos una vez después de un intento de consulta fallido: ya sea a través del mecanismo de reintento de la biblioteca SNMP o a través del mecanismo interno de [procesamiento combinado] (#internal_workings_of_combined_processing) .

Si monitorea dispositivos SNMPv3, asegúrese de que msgAuthoritativeEngineID (también conocido como snmpEngineID o "Engine ID") nunca es compartido por dos dispositivos. Según RFC 2571 (sección 3.1.1.1) debe ser único para cada dispositivo.

RFC3414 requiere que los dispositivos SNMPv3 persistan sus "engineBoots". Algunos dispositivos no hacen eso, lo que resulta en que sus mensajes SNMP se descartan como obsoletos después de reiniciarlos. En tal situación, la caché SNMP debe borrarse manualmente en un servidor/proxy (usando -R snmp_cache_reload) o es necesario reiniciar el servidor/proxy.

Configuración de la supervisión de SNMP

Para comenzar a monitorear un dispositivo a través de SNMP, se deben seguir los siguientes pasos:

Paso 1

Averigüe la cadena SNMP (u OID) de la métrica que desea monitorear.

Para obtener una lista de cadenas SNMP, use el comando snmpwalk (parte del software net-snmp que debe tener instalado como parte de la instalación de Zabbix) o una herramienta equivalente:

shell> snmpwalk -v 2c -c public <IP del host> .

Como '2c' aquí representa la versión SNMP, también puede sustituirlo por '1', para indicar la versión 1 de SNMP en el dispositivo.

Esto debería darle una lista de cadenas SNMP y su último valor. En caso contrario, es posible que la 'comunidad' SNMP sea diferente del valor estándar 'public' , en cuyo caso deberá averiguar cual es.

A continuación, puede recorrer la lista hasta que encuentre la cadena que desea monitorear, por ej. si desea monitorear los bytes que ingresan al puerto 3 de su conmutador, usaría la cadena IF-MIB::ifHCInOctets.3 de esta línea:

IF-MIB::ifHCInOctets.3 = Counter64: 3409739121

Ahora puede usar el comando snmpget para averiguar el OID numérico para 'IF-MIB::ifInOctets.3':

shell> snmpget -v 2c -c public -On <host IP> IF-MIB::ifHCInOctets.3

Tenga en cuenta que el último número de la cadena es el número de puerto que pretende monitorear. Véase también: índices dinámicos.

Esto debería darle algo como lo siguiente:

.1.3.6.1.2.1.31.1.1.1.6.3 = Counter64: 3472126941

Nuevamente, el último número en el OID es el número de puerto.

Algunos de los OID de SNMP más utilizados son traducidos automáticamente a una representación numérica por Zabbix.

En el último ejemplo anterior, el tipo de valor es "Counter64", que internamente corresponde al tipo ASN_COUNTER64. La lista completa de tipos admitidos es ASN_COUNTER, ASN_CONTADOR64, ASN_UINTEGER, ASN_UNSIGNED64, ASN_INTEGER, ASN_INTEGER64, ASN_FLOAT, ASN_DOUBLE, ASN_TIMETICKS, ASN_GAUGE, ASN_IPADDRESS, ASN_OCTET_STR y ASN_OBJECT_ID. Estos tipos corresponden aproximadamente a "Counter32", "Counter64", "UInteger32", "INTEGER", "Float", "Double", "Timeticks", "Gauge32", "IpAddress", "OCTET STRING", "OBJECT IDENTIFIER" en la salida de snmpget, pero también pueden mostrarse como "STRING", "Hex-STRING", "OID" y otros, dependiendo de la presencia de una pista de visualización.

Paso 2

Crear un equipo correspondiente a un dispositivo.

Agregue una interfaz SNMP para el equipo:

  • Ingrese la dirección IP/nombre DNS y el número de puerto
  • Seleccione la versión SNMP del menú desplegable
  • Agregue credenciales de interfaz según la versión de SNMP seleccionada:
    • SNMPv1, v2 requiere solo la comunidad (generalmente 'public')
    • SNMPv3 requiere opciones más específicas (ver más abajo)
  • Especifique el valor máximo de repetición (predeterminado: 10) para solicitudes masivas SNMP nativas(GetBulkRequest-PDU); solo para las métricas discovery[] y walk[] en SNMPv2 y v3. Tenga en cuenta que establecer este valor demasiado alto puede causar que se agote el tiempo de espera de verificación del agente SNMP.
  • Deje la casilla de verificación Usar solicitudes combinadas marcada para permitir el procesamiento combinado de solicitudes SNMP
Parámetro SNMPv3 Descripción
Nombre de contexto Ingrese el nombre de contexto para identificar el elemento en la subred SNMP.
El nombre de contexto es compatible con elementos SNMPv3 desde Zabbix 2.2.
Las macros de usuario se resuelven en este campo.
Nombre de seguridad Ingrese el nombre de seguridad.
Las macros de usuario se resuelven en este campo.
Nivel de seguridad Seleccione el nivel de seguridad:
noAuthNoPriv: no se utilizan protocolos de autenticación ni privacidad
AuthNoPriv: se utiliza el protocolo de autenticación, no se utiliza el protocolo de privacidad
AuthPriv - se utilizan tanto los protocolos de autenticación como los de privacidad
Protocolo de autenticación Seleccione el protocolo de autenticación - MD5, SHA1, SHA224, SHA256, SHA384 o SHA512.
Frase de contraseña de autenticación Ingrese la frase de contraseña de autenticación.
Las macros de usuario se resuelven en este campo.
Protocolo de privacidad Seleccione el protocolo de privacidad: DES, AES128, AES192, AES256, AES192C (Cisco) o AES256C (Cisco).
Frase de contraseña de privacidad Ingrese la frase de contraseña de privacidad.
Las macros de usuario se resuelven en este campo.

En caso de credenciales SNMPv3 incorrectas (nombre de seguridad, autenticación protocolo/frase de contraseña, protocolo de privacidad) Zabbix recibe un ERROR de net-snmp, excepto por una frase de contraseña de privacidad incorrecta, en cuyo caso recibe un error TIMEOUT de net-snmp.

Los cambios en Protocolo de autenticación, Frase de contraseña de autenticación, Protocolo de privacidad o Frase de contraseña de privacidad, hechos sin cambiar el Nombre de seguridad, tendrán efecto solo después de que la caché en un servidor/proxy se haya borrado manualmente (usando -R snmp_cache_reload) o el el servidor/proxy se reinicie. En los casos en que Nombre de seguridad también se haya modificado, todos los parámetros se actualizarán inmediatamente.

Puede utilizar una de las plantillas SNMP proporcionadas (Plantilla de dispositivo SNMP y otros) que agregarán automáticamente un conjunto de métricas. Sin embargo, la plantilla puede no ser compatible con el equipo. Haga clic en Agregar para guardar el equipo.

Paso 3

Cree una métrica para monitorear.

Entonces, ahora regrese a Zabbix y haga clic en Métricsa para el equipo SNMP que ha creado anteriormente. Dependiendo de si usó una plantilla o no cuando creó su equipo, tendrá una lista de métricas SNMP asociadas con su equipo o simplemente una lista vacía. Trabajaremos bajo el supuesto que va a crear la métrica usted mismo utilizando la información que acaba de recopilar usando snmpwalk y snmpget, así que haga clic en Crear métrica.

Complete los parámetros requeridos en el formulario de nuevo artículo:

Parámetro Descripción
Nombre Ingrese el nombre de la métrica.
Tipo Seleccione Agente SNMP aquí.
Clave Ingrese la clave como algo significativo.
Interfaz de equipo Asegúrese de seleccionar la interfaz SNMP, p. de su conmutador/enrutador.
SNMP OID Este campo admite dos opciones:
1) Ingrese un único OID textual o numérico, por ejemplo: 1.3.6.1.2.1.31.1.1.1.6.3 (en este caso, asegúrese para agregar un paso de Cambio por segundo en la pestaña Preprocesamiento; de lo contrario, obtendrá valores acumulativos del dispositivo SNMP en lugar del último cambio).
2) Utilice el walk[OID1, OID2,...] elemento, que utiliza solicitudes masivas SNMP nativas (GetBulkRequest-PDU). Puede utilizar esto como métrica principal, con métricas dependientes que extraen datos de la principal mediante preprocesamiento.
Por ejemplo, walk[1.3.6.1.2.1.2.2.1.2,1.3.6.1.2.1.2.2.1.3].
Esta métrica devuelve la salida de la utilidad snmpwalk con los parámetros -Oe -Ot -On.
Los nombres MIB se admiten como parámetros; por lo tanto, walk[1.3.6.1.2.1.2.2.1.2] y walk[ifDescr] devolverán el mismo resultado.
Si se especifican varios OID/MIB, es decir, walk[ifDescr,ifType,ifPhysAddress] , entonces el resultado es una lista concatenada.
Este elemento utiliza solicitudes GetBulk con interfaces SNMPv2 y v3 y GetNext para interfaces SNMPv1; las repeticiones máximas para solicitudes masivas se configuran en el nivel de la interfaz.
Puede usar esta métrica como métrica principal en descubrimiento SNMP.

Todos los campos de entrada obligatorios están marcados con un asterisco rojo.

Ahora guarde la métrica y vaya a MonitoreoÚltimos datos para ver sus datos SNMP.

Ejemplo 1

Ejemplo general:

Parámetro Descripción
OID 1.2.3.45.6.7.8.0 (o .1.2.3.45.6.7.8.0)
Clave <Cadena única que se utilizará como referencia para los iniciadores>
Por ejemplo, "my_param".

Tenga en cuenta que el OID se puede proporcionar en forma numérica o de cadena. Sin embargo, en algunos casos, la cadena OID debe convertirse a una representación numérica. Se puede utilizar la utilidad snmpget para este propósito:

shell> snmpget -On localhost public enterprises.ucdavis.memory.memTotalSwap.0
Ejemplo 2

Monitoreo del tiempo de actividad:

Parámetro Descripción
OID MIB::sysUpTime.0
Clave router.uptime
Tipo de valor Flotante
Unidades tiempo de actividad
Paso de preprocesamiento: Multiplicador personalizado 0.01

Solicitudes masivas SNMP nativas

El elemento walk[OID1,OID2,...] permite utilizar la funcionalidad SNMP nativa para solicitudes masivas (GetBulkRequest-PDU), disponible en las versiones SNMP 2/3.

Una solicitud GetBulk en SNMP ejecuta múltiples solicitudes GetNext y devuelve el resultado en una única respuesta. Esto se puede utilizar para elementos SNMP normales, así como para el descubrimiento de SNMP para minimizar los viajes de ida y vuelta de la red.

El elemento SNMP walk[OID1,OID2,...] se puede utilizar como elemento maestro que recopila datos en una solicitud con métricas dependientes que analizan la respuesta según sea necesario mediante el preprocesamiento.

Tenga en cuenta que el uso de solicitudes masivas SNMP nativas no está relacionado con la opción de combinar solicitudes SNMP, que es la forma propia de Zabbix de combinar múltiples solicitudes SNMP (consulte la siguiente sección).

Funcionamiento interno del procesamiento combinado

El servidor y el proxy de Zabbix pueden consultar los dispositivos SNMP para múltiples valores en una sola solicitud. Esto afecta a varios tipos de métricas SNMP:

Todas las métricas SNMP en una única interfaz con parámetros idénticos son programadas para ser consultadas al mismo tiempo. Los dos primeros tipos de métrica son tomados por los sondeadores en lotes de como máximo 128 elementos, mientras que los sondeadores de reglas de descubrimiento de bajo nivel se procesan individualmente, como antes.

En el nivel inferior, se realizan dos tipos de operaciones para consultar valores: obtener múltiples objetos especificados y recorrer un árbol de OID.

Para "obtener", se utiliza una PDU GetRequest con como máximo 128 variables. fijadas. Para "caminar", se utiliza una PDU GetNextRequest para SNMPv1 y GetBulkRequest con campo "max-repetitions" de como máximo 128 se utiliza para SNMPv2 y SNMPv3.

Por lo tanto, los beneficios del procesamiento combinado para cada tipo de elemento SNMP se describen a continuación:

  • Las métricas SNMP regulares se benefician de "obtener" mejoras;
  • Las métricas SNMP con índices dinámicos se benefician tanto de "obtener" como de mejoras "caminando": "obtener" se utiliza para la verificación del índice y "caminar" para construir la caché;
  • Las reglas de descubrimiento de bajo nivel SNMP se benefician de mejoras al "caminar".

Sin embargo, existe un problema técnico que no todos los dispositivos son capaces de devolver 128 valores por solicitud. Algunos siempre devuelven una respuesta adecuada, pero otros responden con un error "tooBig(1)" o no responden para nada una vez que la respuesta potencial supera un cierto límite.

Para encontrar un número óptimo de objetos para consultar para un determinado dispositivo, Zabbix utiliza la siguiente estrategia. Comienza con cautela consultando 1 valor en una solicitud. Si tiene éxito, consulta 2 valores en una solicitud. Si eso vuelve a tener éxito, consulta 3 valores en una solicitud y continúa de manera similar multiplicando el número de objetos consultados en 1,5, lo que da como resultado la siguiente secuencia de tamaños de solicitud: 1, 2, 3, 4, 6, 9, 13, 19, 28, 42, 63, 94, 128.

Sin embargo, una vez que un dispositivo se niega a dar una respuesta adecuada (por ejemplo, para 42 variables), Zabbix hace dos cosas.

Primero, para el lote de métricas actual, se reduce a la mitad el número de objetos en una solicitud única y se consultan 21 variables. Si el dispositivo está vivo, entonces la consulta debería funcionar en la gran mayoría de los casos, porque se sabe que 28 variables funcionaban y 21 es significativamente menos que eso. Sin embargo, si esto aún falla, Zabbix vuelve a consultar los valores. uno a uno. Si aún falla en este punto, entonces el dispositivo definitivamente no responde y el tamaño de la solicitud no es un problema.

Lo segundo que hace Zabbix para los lotes de métricas siguientes es iniciar con el último número exitoso de variables (28 en nuestro ejemplo) y continúa incrementando el tamaño de las solicitudes en 1 hasta alcanzar el límite. Por ejemplo, asumiendo que el tamaño de respuesta más grande es de 32 variables, el Las solicitudes posteriores serán de tallas 29, 30, 31, 32 y 33. La última la solicitud fallará y Zabbix nunca emitirá una solicitud de tamaño 33 de nuevo. A partir de ese momento, Zabbix consultará como máximo 32 variables para este dispositivo.

Si las consultas grandes fallan con esta cantidad de variables, puede significar que una de dos cosas. Los criterios exactos que utiliza un dispositivo para limitar la respuesta. No se puede conocer el tamaño, pero tratamos de aproximarlo usando el número de variables. Entonces la primera posibilidad es que este número de variables sea alrededor del límite de tamaño de respuesta real del dispositivo en el caso general: A veces la respuesta es menor que el límite, a veces es mayor que eso. La segunda posibilidad es que un paquete UDP en cualquier dirección simplemente se perdió. Por estos motivos, si Zabbix recibe una consulta fallida, reduce el número máximo de variables para intentar profundizar en el rango cómodo del dispositivo, pero (a partir de 2.2.8) solo hasta dos veces.

En el ejemplo anterior, si falla una consulta con 32 variables, Zabbix reducirá la cuenta a 31. Si eso también falla, Zabbix reducirá la cuenta a 30. Sin embargo, Zabbix no reducirá la cuenta por debajo de 30, porque asumirá que más fallas se deben a UDP paquetes que se pierden, en lugar del límite del dispositivo.

Sin embargo, si un dispositivo no puede manejar solicitudes combinadas adecuadamente por otras razones y la heurística descrita anteriormente no funciona, ya que Zabbix 2.4 hay una configuración de "Usar solicitudes combinadas" para cada interfaz que permite deshabilitar las solicitudes combinadas para ese dispositivo.