Difference between revisions of "Pandora: Documentation es: Monitorizacion traps SNMP"

From Pandora FMS Wiki
Jump to: navigation, search
(Generador de Traps: Imagen sobredimensionada.)
(Gestor de TRAPS externo: Con información actualizada vía Mattermost.)
 
(40 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Pandora:Documentation|Volver a Indice de Documentacion Pandora FMS]]
+
[[Pandora:Documentation|Volver al Índice de Documentación Pandora FMS]]
  
  
Line 6: Line 6:
 
== Introducción ==
 
== Introducción ==
  
Los dispositivos de red que soportan SNMP, como switches, routers, servidores, impresoras o AP's pueden enviar alarmas (o traps SNMP) cuando suceden determinados eventos, tales como caída de un interfaz, la carga de la CPU o de la red es muy alta, una UPS cambia de estado o se llena una partición de disco. Cada dispositivo tiene su propia "colección" de posibles eventos, que se refleja en una colección, llamaba MIB, en este caso, diferente de la MIB que usábamos para hacer consultas al dispositivo.  
+
Los dispositivos de red que soportan SNMP, como ''switches'', ''routers'', servidores, impresoras o ''Access Panel'' pueden enviar alarmas (o '''traps SNMP''') cuando suceden determinados eventos, tales como caída de un interfaz, la carga de la CPU o de la red es muy alta, un sistema de alimentación ininterrumpida (SAI o ''UPS'') cambia de estado o se llena una partición de disco. Cada dispositivo tiene su propia "colección" de posibles eventos, que se refleja en una colección, llamaba MIB, en este caso, diferente de la MIB utilizada para hacer consultas al dispositivo.  
 
 
  
 
[[Image:Trap-example.png|center|600px]]
 
[[Image:Trap-example.png|center|600px]]
  
Los traps son enviados sólo cuando sucede algo, de forma asíncrona (no repetitiva en el tiempo) por el dispositivo hacia un receptor de traps SNMP. Pandora FMS tiene una consola de recepción de traps que permite visualizar los traps que envían los objetos monitorizados y añadir alertas a dichos traps. Los traps SNMP se reciben a través del demonio del sistema operativo que el servidor SNMP de Pandora FMS arranca cuando el servidor de Pandora FMS se inicia. Este demonio, almacena los traps en un log ubicado por defecto en  
+
Los ''traps'' son enviados solo cuando sucede algo, de forma asíncrona (no repetitiva en el tiempo) por el dispositivo hacia un receptor de traps SNMP. Pandora FMS tiene una consola de recepción de traps que permite visualizar los traps que envían los objetos monitorizados y añadir alertas a dichos traps. Los '''traps SNMP''' se reciben a través del demonio del sistema operativo que el servidor SNMP de Pandora FMS arranca cuando el servidor de Pandora FMS se inicia. Este demonio, almacena los traps en un log ubicado por defecto en  
  
 
  /var/log/pandora/pandora_snmptrap.log
 
  /var/log/pandora/pandora_snmptrap.log
  
Los traps se reciben generalmente en formato "crudo", es decir, con OID's numéricos, a no ser que una MIB instalada en el Sistema Operativo sea capaz de resolverlos. La consola SNMP de Pandora FMS ''Enterprise'' permite crear reglas para renombrar OID's numéricas a OID's alfanuméricas o simples cadenas de texto descriptivas (p.e:sSe ha caído la interfaz) de forma que sea más intuitivo trabajar con TRAPS. Pandora FMS también permite cargar MIB's de Traps de cualquier fabricante para definir automáticamente esas reglas.
+
Los traps se reciben generalmente en formato "crudo", es decir, con OID numéricos, a no ser que una MIB instalada en el Sistema Operativo sea capaz de resolverlos. La consola SNMP de Pandora FMS ''Enterprise'' permite crear reglas para renombrar las OID numéricas a OID de tipo alfanuméricas o simples cadenas de texto descriptivas (ej. "Se ha caído la interfaz") de forma que sea más intuitivo trabajar con traps. Pandora FMS también permite cargar los MIB de traps de cualquier fabricante para definir automáticamente esas reglas, puede obtener más información en el vídeo tutorial [https://www.youtube.com/watch?v=VoqHU_KOUJo «Carga de MIBs en Pandora FMS»].
  
Para poder trabajar con traps SNMP, primero modifique el siguiente parámetro en ''/etc/pandora/pandora_server.conf'' para activar la Consola SNMP:
+
Para poder trabajar con traps SNMP, primero modifique el siguiente parámetro en <code>/etc/pandora/pandora_server.conf</code> para activar la Consola SNMP:
  
 
  snmpconsole 1
 
  snmpconsole 1
  
Si quiere que las traps le aparezcan traducidas (ya sean los enlaces variables o la cadena Enterprise) deberá activar los siguientes parámetros (sólo en la versión Enterprise):
+
Si quiere que los traps le aparezcan traducidos (ya sean los enlaces variables o la cadena Enterprise) deberá activar los siguientes parámetros (sólo en la versión Enterprise):
  
 
  translate_variable_bindings 1
 
  translate_variable_bindings 1
 
  translate_enterprise_strings 1
 
  translate_enterprise_strings 1
  
También debe configurar el archivo ''/etc/snmp/snmptrapd.conf'' con los parámetros necesarios, por ejemplo:
+
También debe configurar el archivo <code>/etc/snmp/snmptrapd.conf</code> con los parámetros necesarios, por ejemplo:
  
 
  authCommunity log public
 
  authCommunity log public
 
  disableAuthorization yes
 
  disableAuthorization yes
  
Con esta configuración, los traps se crearán para la comunidad public y no requerirán autorización.
+
Con esta configuración, los traps se crearán para la comunidad '''public''' y no requerirán autorización.
  
 
=== SNMPv3 ===
 
=== SNMPv3 ===
  
Los traps SNMPv3 son rechazados a menos que el usuario que los envía se añada a ''/etc/snmp/snmptrapd.conf'' utilizando la directiva [http://www.net-snmp.org/docs/man/snmptrapd.conf.html createUser]. Por ejemplo:
+
Los traps SNMPv3 son rechazados a menos que el usuario que los envía se añada a <code>/etc/snmp/snmptrapd.conf</code> utilizando la directiva [http://www.net-snmp.org/docs/man/snmptrapd.conf.html <code>createUser</code>]. Por ejemplo:
  
 
  disableAuthorization yes
 
  disableAuthorization yes
 
  createUser -e 0x0102030405 snmpv3user SHA mypassword AES
 
  createUser -e 0x0102030405 snmpv3user SHA mypassword AES
  
{{Warning|Se debe especificar el engineID con la opción ''-e''. De lo contrario, sólo se recibirán INFORMs SNMPv3.}}
+
{{Warning|Se debe especificar el engineID con la opción <code>-e</code>. De lo contrario, sólo se recibirán INFORMs SNMPv3.}}
  
 
== Acceso a la consola de recepción de traps ==
 
== Acceso a la consola de recepción de traps ==
  
Para acceder a la consola de recepción de traps se va a '''Monitoring > SNMP > SNMP Console''' donde aparece la lista de traps que se han recibido. Mediante el icono de la lupa se puede desplegar toda la información del trap, igual que ocurre con los eventos. Aquí podemos ver la información detallada de un trap SNMP.
+
Para acceder a la consola de recepción de traps vaya a '''Monitoring > SNMP > SNMP Console''' donde aparece la lista de traps que se han recibido. Mediante el icono de la lupa se puede desplegar toda la información del trap, igual que ocurre con los eventos. En esta sección dispone de la información detallada de un trap SNMP cualquiera.
  
 
[[Image:Traps.JPG|center|800px]]
 
[[Image:Traps.JPG|center|800px]]
Line 50: Line 49:
 
Para cada trap aparecen las siguientes columnas:
 
Para cada trap aparecen las siguientes columnas:
  
'''Status'''
+
;Status: Cuadrado verde si el trap se ha validado y rojo si no se ha validado.
 
 
Cuadrado verde si el trap se ha validado y rojo si no se ha validado.
 
 
 
'''SNMP Agent'''
 
 
 
Agente que ha enviado el trap.
 
 
 
'''OID'''
 
 
 
OID del trap enviado. Un trap solo puede enviar un dato en este campo.
 
 
 
'''Value'''
 
 
 
Campo value del trap enviado. Un trap solo puede enviar un dato en este campo.
 
 
 
'''Custom OID, Custom Value'''
 
 
 
Campos personalizados enviados en el trap. Pueden ser datos muy complejos, que tengan una lógica específica en función del dispositivo que envía el trap. Un trap puede enviar varios datos en este campo.
 
  
'''Time Stamp'''
+
;SNMP Agent: Agente que ha enviado el trap.
  
Tiempo que ha pasado desde que se ha recibido el trap.
+
;Enterprise string: OID o ''Object Identifier''' (Identificador de Objeto) del trap enviado. Un trap solo puede enviar un dato en este campo.
  
'''Alerta'''
+
;Time Stamp: Tiempo que ha transcurrido desde que se ha recibido el trap.
  
Cuadrado amarillo si se ha lanzado alguna alerta con este trap o cuadrado gris, si no se ha lanzado ninguna alerta.
+
;Alerta: Cuadrado amarillo si se ha lanzado alguna alerta con este trap o cuadrado gris, si no se ha lanzado ninguna alerta.
  
'''Acción'''
+
;Acción: Acción con botones para validar o borrar el trap.
 
Campo para borrar o validar el trap.
 
  
'''Color'''
+
'''Colores'''
  
 
Además los traps tienen un color (visto como color de fondo de la línea del trap) diferente según el tipo de trap.
 
Además los traps tienen un color (visto como color de fondo de la línea del trap) diferente según el tipo de trap.
Line 88: Line 67:
 
*'''Azul''': los traps de tipo mantenimiento.
 
*'''Azul''': los traps de tipo mantenimiento.
 
*'''Morado''': los traps de  tipo información.
 
*'''Morado''': los traps de  tipo información.
*'''Verde''': los traps de tipo Normal.
+
*'''Verde''': los traps de tipo <code>normal</code>.
*'''Amarillo''': los traps de tipo Warning.
+
*'''Amarillo''': los traps de tipo <code>warning</code>.
*'''Rojo''':  los traps de tipo Crítico.
+
*'''Rojo''':  los traps de tipo <code>critical</code>.
  
En la parte superior de la consola de traps aparece la opción “Toggle Filter”. Pulsando sobre dicha opción aparecen o desaparecen los campos para filtrar traps.
+
Al hacer clic en '''Toggle Filter''' aparecen o desaparecen los campos para filtrar traps.
  
 
[[Image:alert.png|center|700px]]
 
[[Image:alert.png|center|700px]]
Line 98: Line 77:
 
===Validar traps===
 
===Validar traps===
  
Con el fin de realizar una gestión efectiva de los traps, es posible validar los mismos para que el administrador pueda discriminar entre los traps que ha visto ya y los que no ha visto.
+
Con el fin de realizar una gestión efectiva de los traps, es posible validar los mismos para que el administrador pueda discriminar entre los traps que ha visto y los que no ha visto.
  
Para validar un trap se pulsa sobre el círculo verde que hay a la izquierda del trap. También es posible validar múltiples traps marcándolos y pinchando en el botón de “validate”. El procedimiento es similar a como funcionan los eventos en Pandora FMS.
+
Para validar un trap haga clic sobre el círculo a la izquierda del trap.
  
 
[[Image:Traps2.JPG|center|760px]]
 
[[Image:Traps2.JPG|center|760px]]
 +
 +
También es posible validar múltiples traps marcándolos y pulsando el botón '''Validate'''.
  
 
===Borrar traps ===
 
===Borrar traps ===
  
Es posible borrar traps una vez que los mismos se han tratado, bien individualmente o mediante selección múltiple y acción "Delete". Para evitar que los traps se acumulen, existe una opción de configuración que por defecto borra los traps de más de 10 días automáticamente.  
+
Es posible borrar traps una vez que los mismos se han tratado, bien individualmente o mediante selección múltiple y acción '''Delete'''.  
  
 
[[Image:Traps3.JPG|center|700px]]
 
[[Image:Traps3.JPG|center|700px]]
 +
 +
Para evitar que los traps se acumulen, existe una opción de configuración que por defecto borra los traps transcurridos hace más de 10 días automáticamente.
  
 
== Alertas de Traps SNMP==
 
== Alertas de Traps SNMP==
===Introducción===
+
=== Introducción ===
Pandora FMS también dispone de un sistema de alertas para los traps SNMP que recibe. Se basan principalmente en reglas de filtrado, buscando coincidencias en todos los campos posibles de acuerdo a reglas que configuremos para disparar la alerta. Antes de seguir leyendo, podemos saber más sobre las alertas de Pandora FMS [http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_es:Alertas]
+
 
 +
Pandora FMS también dispone de un sistema de alertas para los traps SNMP que recibe. Se basan principalmente en reglas de filtrado, buscando coincidencias en todos los campos posibles de acuerdo a reglas que configure para disparar la alerta. Puede obtener más información sobre las alertas de Pandora FMS [http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_es:Alertas en este enlace].
  
 
=== Añadir una alerta ===
 
=== Añadir una alerta ===
Line 118: Line 102:
 
Las alertas de traps SNMP tienen varios campos que se utilizarán para buscar coincidencias en los trap SNMP recibidos en la consola. Pueden utilizarse de forma opcional los campos que se quieran para crear reglas más generales o más específicas en función de la necesidad:
 
Las alertas de traps SNMP tienen varios campos que se utilizarán para buscar coincidencias en los trap SNMP recibidos en la consola. Pueden utilizarse de forma opcional los campos que se quieran para crear reglas más generales o más específicas en función de la necesidad:
  
[[Image:alertSNMP1.png|center|460px]]
+
[[Image:alertSNMP1.png|center|500px]]
  
  
*'''Description''': Combo para escribir una descripción de la alerta.
+
;Enterprise String: OID principal del Trap. Se buscará la presencia de la cadena, pudiendo incluso ser un trozo del OID; por ejemplo <code>1.21.34.2.3</code> en un OID más largo. Puede emplearlo del mismo modo en el campo, y realizará la búsqueda como si se tratase de: <code>*1.21.34.2.3*</code> (es innecesario emplear asteriscos como caracteres comodines).
  
*'''Enterprise String''': OID principal del Trap. Se buscará la presencia de la cadena, pudiendo ser un trozo del OID, de forma que si queremos buscar, por ejemplo:  1.21.34.2.3 en un OID más largo, podemos emplearlo del mismo modo en el campo, y realizará la búsqueda como si se tratase de: .*1.21.34.2.3.* Por lo que NO hay que emplear asteriscos.
+
;Custom Value/OID: Busca en los campos '''Value''' del trap, así como en los campos '''Custom OID''' y '''Custom Value''', es decir, en el resto de campos del TRAP. Aquí funciona la búsqueda por expresión regular. Por ejemplo si tiene un trap que envía la cadena "Testing TRAP 225" es posible buscar cualquier trap con la subcadena "Testing TRAP" mediante la expresión regular "Testing.*TRAP.*"
  
*'''Custom Value/OID''': Esto busca en los campos "Value" del trap, así como en los campos "Custom OID" y "Custom Value", es decir, en el resto de campos del TRAP. Aquí funciona la búsqueda por expresión regular. Por ejemplo si tenemos un trap que envía la cadena "Testing TRAP 225" yo puedo buscar cualquier trap con la subcadena "Testing TRAP" con la expresión regular "Testing.*TRAP.*"
+
;SNMP Agent: Dirección IP del Agente que envía el trap. También permite usar una expresión regular o una subcadena.
  
*'''SNMP Agent''': IP del agente que envía el trap. De igual forma, podemos usar una expresión regular o una subcadena.
+
;Trap type: Filtra por tipo de trap. La mayoría de los traps generados suelen ser de tipo '''Other'''; si no especifica nada, buscará cualquier tipo de trap.
  
*'''Trap type''': Filtra por tipo de trap pudiendo ser: Cold start, Warm start, Link down, Link up, Authentication failure o Other. La mayoría de los traps generados suelen ser de tipo "Other"; si no especifica nada, buscará cualquier tipo de trap.
+
[[Image:Trap type.png|center|360px]]
  
*'''Single value''': Filtra por el valor del trap. En el ejemplo igual a .666. Esto solo hace referencia al valor simple del OID principal, no de cualquier OID secundario.
+
;Single value: Filtra por el valor del trap. Esto solo hace referencia al valor simple del OID principal, no de cualquier OID secundario.
  
*'''Variable bindings/Data #1-20''': Son expresiones regulares que intentan casar con las variables 1 a 20. Si hay un acierto, se dispara la alerta. El valor de la variable se guarda en la macro _snmp_fx_ correspondiente (_snmp_f1_, _snmp_f2_, ...). Aunque sólo se puede especificar una expresión regular para veinte variables, las macros _snmp_fx_ macros están disponibles para todas ellas (_snmp_f11_, _snmp_f12_, ...).
+
;Variable bindings/Data #1-20': Son expresiones regulares que intentan coincidir con las variables 1 a 20. Si hay un acierto, se dispara la alerta. El valor de la variable se guarda en la macro <code>_snmp_fx_</code> correspondiente (<code>_snmp_f1_</code>, <code>_snmp_f2_</code>, ...). Aunque sólo se puede especificar una expresión regular para veinte variables, las macros <code>_snmp_fx_</code> macros están disponibles para todas ellas (<code>_snmp_f11_</code>, <code>_snmp_f12_</code>, ...).
  
 
[[Image:alertSNMP2.png|center|600px]]
 
[[Image:alertSNMP2.png|center|600px]]
  
*'''Field 1''': Campo para poner el parámetro del comando de la alarma Field 1. Este es el campo que se utilizará en el caso de elegir generar un evento, o el mail de destino en caso de elegir una acción de email (si queremos sobreescribir el mail que tenga por defecto en la acción). Para entender a fondo como funcionan los campos personalizados en las acciones/plantillas de alertas, lea a fondo el capítulo de la documentación que explica las alertas en Pandora FMS [http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_es:Alertas]
+
;Field 1: Campo para colocar el parámetro del comando de la alarma <code>Field 1</code>. Este es el campo que se utilizará en el caso de elegir generar un evento, o el correo electrónico de destino en caso de elegir una acción de <code>eMail</code> (si es que se necesita sobreescribir el correo electrónico que tenga por defecto en la acción). Para más información acerca de las alertas en Pandora FMS visite el siguiente [http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_es:Alertas enlace]
  
*'''Field 2''': Campo para poner el parámetro del comando de la alarma Field 2. En el caso de enviar un email, p.e. será el subject del mensaje.  Si se deja en blanco utilizaría lo que hubiera definido en la acción.
+
;Field 2: Campo para poner el parámetro del comando de la alarma <code>Field 2</code>. Por ejemplo, en el caso de enviar un correo electrónico, será el asunto del mensaje.  Si se deja en blanco utilizará lo que haya definido en la acción.
  
*'''Field 3''': Campo para poner el parámetro del comando de la alarma Field 3. El el caso de enviar un email, sería el texto del mensaje. Si se deja en blanco utilizaría lo que hubiera definido en la acción.
+
;Field 3: Campo para poner el parámetro del comando de la alarma <code>Field 3</code>. El el caso de enviar un correo electrónico, sería el texto del mensaje. Si se deja en blanco utilizará lo que haya definido en la acción.
  
*'''Min. Number of Alerts''': Campo donde se define el mínimo número de traps que tienen que llegar para que salte la alarma.
+
;Min. Number of Alerts: Campo donde se define el mínimo número de traps que tienen que llegar para que salte la alarma.
  
*'''Max. Number of Alerts''': Campo donde se define el número máximo de veces que se ejecutará la acción en el intervalo dado (o time threshold).
+
;Max. Number of Alerts: Campo donde se define el número máximo de veces que se ejecutará la acción en el intervalo dado (o '''time threshold''').
  
*'''Time Threshold''': Campo donde se define el tiempo que debe pasar antes de resetear el contador de alarmas. Este contador es el que se usa para el campo Min. Number of alerts.
+
;Time Threshold: Campo donde se define el tiempo que debe pasar antes de resetear el contador de alarmas. Este contador es el que se usa para el campo '''Min. Number of alerts'''.
  
*'''Priority''': Combo donde se establece la prioridad de la alarma. Las prioridades de las alertas son diferentes y no tienen nada que ver con la prioridad de los traps, ni con la de los eventos de Pandora FMS.
+
;Priority: Combo donde se establece la prioridad de la alarma. Las prioridades de las alertas son diferentes y no tienen nada que ver con la prioridad de los traps, ni con la de los eventos de Pandora FMS.
  
*'''Alert Action''': Combo donde se determina la acción que va a ejecutar la alerta. Si se elige un evento, el evento normal de generación de alerta no se generará.
+
;Alert Action: Combo donde se determina la acción que va a ejecutar la alerta. Si se elige un evento, el evento normal de generación de alerta no se generará.
  
*'''Position''': Las alertas con menor posición se evalúan primero. Si hay varias alertas con la misma posición que coinciden con el trap, se lanzarán todas las alertas coincidentes con la misma posición. Las de menor posición, aunque coincidan, no se lanzarán.
+
;Position: Las alertas con menor posición se evalúan primero. Si hay varias alertas con la misma posición que coinciden con el trap, se lanzarán todas las alertas coincidentes con la misma posición. Las de menor posición, aunque coincidan, no se lanzarán.
  
 
=== Macros de fields en las alertas ===
 
=== Macros de fields en las alertas ===
Line 159: Line 143:
 
Se pueden utilizar las siguientes macros en cualquiera de los campos ''field'' de las alertas:
 
Se pueden utilizar las siguientes macros en cualquiera de los campos ''field'' de las alertas:
  
* '''_data_:''' Trap entero
+
* <code>_data_</code>: Trap entero
* '''_agent_:''' Nombre del Agente
+
* <code>_agent_</code>: Nombre del Agente
* '''_address_:''' Dirección IP
+
* <code>_address_</code>: Dirección IP
* '''_timestamp_:''' Fecha trap
+
* <code>_timestamp_</code>: Fecha trap
* '''_snmp_oid_:''' OID del trap
+
* <code>_snmp_oid_</code>: OID del trap
* '''_snmp_value_:''' Valor del OID del trap
+
* <code>_snmp_value_</code>: Valor del OID del trap
 
 
  
 
===Ejemplo de alerta de traps ===
 
===Ejemplo de alerta de traps ===
 
Supongamos que recibimos un trap como el que sigue:
 
  
 
[[Image:trap_sample_for_alert.jpg|center|650px]]
 
[[Image:trap_sample_for_alert.jpg|center|650px]]
  
En este caso, tenemos un OID principal (.1.3.6.1.4.1.2789.2005) que identifica un trap que puede contener mensajes de sobrecalientamiento de CPU (no sabemos si más cosas) pero sabemos que en dos variables deja la CPU que se calienta y la temperatura de esa CPU en ese momento, en las variables 1 y dos respectivamente. Como queremos identificar solo los traps de calentamiento de CPU hacemos coincidir la cadena de "Heat alert" en la primera variable del trap (recordemos que tenemos hasta 20 para hacer búsquedas).
+
Se tiene un OID principal <code>.1.3.6.1.4.1.2789.2005</code> que identifica un trap que puede contener mensajes de sobrecalientamiento de CPU (e incluso más mensajes de otro tipo). Es conocido por el fabricante que para este tipo de alerta se utilizan dos variables, la primera que la identifica como sobrecalentamiento y la segunda con el valor de la temperatura; ambas son cadenas de texto.
  
Definir la primera parte del trap es sencillo, solo utilizamos el OID principal para hacer el primer y más importante filtro previo:
+
Para definir la primera parte del trap solo se utiliza el OID principal para hacer el primer filtrado:
  
 
[[Image:trap_alert_definition_1.jpg|center|650px]]
 
[[Image:trap_alert_definition_1.jpg|center|650px]]
  
La segunda parte de la definición del trap es la que contiene la parte esencial. En la primera variable del trap, buscamos la cadena "Heat alert" si llegaran traps con el OID principal pero en la primera variable no contuvieran esa cadena de texto, la alerta no saltaría
+
La segunda parte de la definición del trap es la que contiene la parte esencial. En la primera variable del trap colocamos la cadena <code>Head alert</code>
  
[[Image:trap_alert_definition_2.jpg|center|650px]]]]
+
[[Image:trap_alert_definition_2.jpg|center|650px]]
  
Y finalmente, al escoger una alerta de tipo "Evento de pandora", conformamos el mensaje usando las variables que contienen el valor de las variables 1 y 2 del trap recibido:
+
Por último en '''Field 1''' use las variables macro que contienen el valor de las variables 1 y 2 del trap recibido ( <code>_snmp_f1_</code> y <code>_snmp_f2_</code> ) acompañado de un texto descriptivo:
  
 
[[Image:trap_alert_definition_3.jpg|center|650px]]
 
[[Image:trap_alert_definition_3.jpg|center|650px]]
Line 195: Line 176:
 
=== Protección ante tormenta de traps ===
 
=== Protección ante tormenta de traps ===
  
Existen varios parámetros en el servidor que se utilizan para proteger al sistema ante la llegada de una tormenta de traps del mismo origen. Para ello se utilizan los siguientes parámetros de configuración en el fichero ''pandora_server.conf'':
+
Existen varios parámetros en el servidor que se utilizan para proteger al sistema ante la llegada de una tormenta de traps del mismo origen. Para ello se utilizan los siguientes parámetros de configuración en el fichero <code>pandora_server.conf</code>:
  
* '''snmp_storm_protection''': Máximo número de traps procesados en el intervalo de protección.
+
* <code>snmp_storm_protection</code>: Máximo número de traps procesados en el intervalo de protección.
* '''snmp_storm_timeout''': Intervalo en segundos de protección ante tormenta de traps. Durante ese intervalo solo pueden procesarse X traps de la misma fuente (misma IP).
+
* <code>snmp_storm_timeout</code>: Intervalo en segundos de protección ante tormenta de traps. Durante ese intervalo solo pueden procesarse X traps de la misma fuente (misma dirección IP).
* '''snmp_storm_silence_period''': Si es mayor que 0 cada vez que salte el storm protection para una fuente concreta, se sumara el tiempo actual mas el tiempo de silenciado. Hasta que no pase este tiempo no se registraran nuevos traps para la fuente concreta.
+
* <code>snmp_storm_silence_period</code>: Si es mayor que 0 cada vez que salte el ''storm protection'' para una fuente concreta, se sumará el tiempo actual más el tiempo de silenciado. Hasta que no pase este tiempo no se registrarán nuevos traps para la fuente concreta.
  
 
Cuando esta protección salta, queda reflejada en un evento en la consola:
 
Cuando esta protección salta, queda reflejada en un evento en la consola:
Line 205: Line 186:
 
[[Image:Storm silence snmp.png|center|400px]]
 
[[Image:Storm silence snmp.png|center|400px]]
  
La protección ante tormenta de traps, combinada con el filtrado de traps (ver a continuación) permite que si recibimos cientos de miles de traps al día, trabajemos solo con unos pocos miles, a fin de eliminar los redundantes o aquellos que no son útiles.
+
La protección ante tormenta de traps, combinada con el filtrado de traps (ver a continuación) permite que si recibe cientos de miles de traps al día, se trabaje con unos pocos miles, a fin de eliminar los redundantes o aquellos que son inútiles.
  
 
=== Filtrado de traps en el servidor ===
 
=== Filtrado de traps en el servidor ===
  
Algunos sistemas reciben un número elevado de traps de los cuales sólo interesa monitorizar un pequeño porcentaje. Con Pandora FMS es posible filtrar los traps que recibe el servidor para evitar cargar la aplicación de manera innecesaria.
+
Algunos sistemas reciben un número elevado de traps de los cuales sólo interesa monitorizar un pequeño porcentaje. Con Pandora FMS es posible filtrar los traps que recibe el servidor para evitar cargar la aplicación de manera innecesaria. Desde '''Monitoring''' > '''SNMP''' > '''SNMP Filters''' puede definir distintos filtros.
 +
 
 +
[[Image:Monitoring-snmp-snmp_filters.png|center|600px]]
  
Desde Administration>Manage SNMP Console>SNMP Filters se pueden definir distintos filtros. Un trap que case con cualquiera de ellos será automáticamente descartado por el servidor:
+
Agregue una descripción y tantos filtros necesite con el botón '''+''':
  
 
[[Image:Snmp_filter_editor_new.png|center|700px]]
 
[[Image:Snmp_filter_editor_new.png|center|700px]]
  
El filtro se aplica como una expresión regular sobre la entrada correspondiente al trap en el log de SNMP (por defecto ''/var/log/pandora/pandora_snmptrap.log''), que tiene el siguiente formato fijo:
+
Un trap que coincida con cualquiera de ellos será automáticamente descartado por el servidor. El filtro se aplica como una expresión regular sobre la entrada correspondiente al trap en el log de SNMP (por defecto <code>/var/log/pandora/pandora_snmptrap.log</code>), que tiene el siguiente formato fijo:
  
 
  %4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%a[**]%N[**]%w[**]%W[**]%q[**]%v\n
 
  %4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%a[**]%N[**]%w[**]%W[**]%q[**]%v\n
Line 221: Line 204:
 
Siendo:  
 
Siendo:  
  
* %y: Año actual.
+
* <code>%y</code>: Año actual.
* %m: Mes actual (numérico).
+
* <code>%m</code>: Mes actual (numérico).
* %l: Día del mes actual.
+
* <code>%l</code>: Día del mes actual.
* %h: Hora actual.
+
* <code>%h</code>: Hora actual.
* %j: Minuto actual.
+
* <code>%j</code>: Minuto actual.
* %k: Segundo actual.
+
* <code>%k</code>: Segundo actual.
* %a: Dirección de origen (sólo traps versión 1).
+
* <code>%a</code>: Dirección de origen (sólo traps versión 1).
* %N: OID.
+
* <code>%N</code>: OID.
* %w: Tipo de trap (numérico).
+
* <code>%w</code>: Tipo de trap (numérico).
* %W: Descripción del trap.
+
* <code>%W</code>: Descripción del trap.
* %q: Sub-tipo del trap (numérico).
+
* <code>%q</code>: Sub-tipo del trap (numérico).
* %v: Lista de variables separadas por tab (custom OID).
+
* <code>%v</code>: Lista de variables separadas por tab (custom OID).
  
 
Por ejemplo, para filtrar todos los traps enviados por el host 192.168.50.20 podríamos definir el siguiente filtro:
 
Por ejemplo, para filtrar todos los traps enviados por el host 192.168.50.20 podríamos definir el siguiente filtro:
  
[[Image:Snmp_filter_example.png|center|460px]]
+
[[Image:Snmp_filter_example.png|center|400px]]
  
 
Al poderse crear más de un filtro de manera simultanea, la búsqueda tendrá en cuenta aquellos traps que cumplan todas las condiciones del filtrado.
 
Al poderse crear más de un filtro de manera simultanea, la búsqueda tendrá en cuenta aquellos traps que cumplan todas las condiciones del filtrado.
Line 242: Line 225:
 
=== Estadísticas de traps SNMP ===
 
=== Estadísticas de traps SNMP ===
  
Esta vista permite ver estadísticas de traps, tanto por origen (IP) como por OID, esto permite una gestión eficaz de los filtros, al permitir identificar las IP's que mas traps generan y los OIDs que mas se repiten. El sistema muestra estadísticas de los traps de los últimos 30 días.
+
Esta vista permite ver estadísticas de traps, tanto por origen (dirección IP) como por OID, esto permite una gestión eficaz de los filtros, al permitir identificar las direcciones IP que más traps generan y los OID que más se repiten. El sistema muestra estadísticas de los traps de los últimos 30 días.
  
 
[[Image:Captura_de_pantalla_2014-09-23_a_la(s)_17.59.56.png|center|750px]]
 
[[Image:Captura_de_pantalla_2014-09-23_a_la(s)_17.59.56.png|center|750px]]
Line 250: Line 233:
 
== Personalizar Traps SNMP ==
 
== Personalizar Traps SNMP ==
  
Con el fin de facilitar la comprensión de los traps, que envían los dispositivos monitorizados, por parte del operador es posible subir las MIBs del fabricante a Pandora FMS o bien editar los traps de forma personalizada.
 
  
{{tip|Las siguientes, son características de la versión Enterprise únicamente}}
+
{{Tip|[[Image:icono-modulo-enterprise.png|Versión Enterprise.]]<br>Las siguientes características son de la versión Enterprise únicamente.}}
 +
 
 +
Con el fin de facilitar la comprensión por parte del operador de los traps enviados por los dispositivos monitorizados, es posible subir las MIB del fabricante a Pandora FMS o bien editar los traps de forma personalizada.
  
 
=== Renombrado y personalización de traps ===
 
=== Renombrado y personalización de traps ===
  
Llamamos "editar un trap" al proceso donde se permite "personalizar" el aspecto que tiene un trap en la consola.  
+
"Editar un trap" es el proceso para "personalizar" el aspecto que tiene un trap en la consola. Para editar un trap, vaya a '''Monitoring''' > '''SNMP''' > '''SNMP trap editor'''.  
Si se fija en la captura siguiente, puede que todos sus traps sean difíciles de distinguir debido a la información críptica que contienen.
 
  
Para editar un trap, vaya a Operacion > Consola SNMP. Haga click en el icono de edición del trap que desea personalizar:
+
[[Image:Monitoring-snmp-snmp_trap_editor.png|center|600px]]
 +
 
 +
Haga clic en el icono de edición del trap que desea personalizar:
  
 
[[Image:Traps5.JPG|center|800px]]
 
[[Image:Traps5.JPG|center|800px]]
Line 267: Line 252:
 
[[Image:Traps7.JPG|center|500px]]
 
[[Image:Traps7.JPG|center|500px]]
  
De esta forma, al encontrar traps con el OID ".1.3.6.1.4.1.2789.2005" los visualizará como "Blue box sample". Y será mas fácil diferenciarlos. Su contenido (incluido el OID original) no variará.
+
De esta forma, al encontrar traps con el OID <code>.1.3.6.1.4.1.2789.2005</code> se mostrarán como "Blue box sample" y será más fácil diferenciarlos. Su contenido (incluido el OID original) no variará.
  
"Custom OID" es una expresión regular compatible con Perl que se comparará con la parte de la cadena del trap que contiene los variable bindings. No suele ser necesario para traducir un trap.
+
'''Custom OID''' es una expresión regular compatible con Perl que se comparará con la parte de la cadena del trap que contiene los variable bindings. No suele ser necesario para traducir un trap.
  
 
{{warning|"Custom OID" no está pensado para contener la cadena de variable bindings completa, que puede ser más larga que la máxima longitud que soporta, sino una expresión regular que encaja con una o más variables.}}
 
{{warning|"Custom OID" no está pensado para contener la cadena de variable bindings completa, que puede ser más larga que la máxima longitud que soporta, sino una expresión regular que encaja con una o más variables.}}
Line 275: Line 260:
 
Tenga en cuenta que todos los traps anteriores no cambiarán su aspecto, esto entrará en funcionamiento con los nuevos traps que entren en el sistema a partir de este momento.
 
Tenga en cuenta que todos los traps anteriores no cambiarán su aspecto, esto entrará en funcionamiento con los nuevos traps que entren en el sistema a partir de este momento.
  
Finalmente, así es como se vería un trap redefinido por el usuario:
+
Un ejemplo de trap redefinido por el usuario:
  
[[Image:Traps8.JPG|center|800px|Haga clic para ampliar]]
+
[[Image:Traps8.JPG|center|800px]]
  
===Subir las MIBs del fabricante===
+
=== Subir las MIB del fabricante===
  
Esta opción sirve para subir MIBS de traps (exclusivamente) y ampliar la base de datos interna de traducción de Pandora FMS, de forma que cuando llegue un trap, sea automáticamente traducido por su descripción.  
+
Esta opción sirve para subir MIBS y ampliar la base de datos interna de traducción de Pandora FMS, de forma que cuando llegue un trap, sea automáticamente traducido por su descripción. Vaya a '''Monitoring''' > '''SNMP''' > '''MIB uploader'''.
  
Para subir las MIBs del Fabricante se pincha en “Examinar”, se elige el archivo que debe de estar con extensión txt y se pincha en “Upload MIB”.
+
[[Image:Monitoring-snmp-snmp-mib_uploader.png|center|600px]]
  
[[Image:cima6.png|center|600px]]
+
Para subir las MIB de un fabricante haga clic en el icono de '''Upload file(s), elija el archivo y haga clic en el botón '''Go'''.
 +
 
 +
[[Image:cima6.png|center|500px]]
  
 
Una vez que se ha subido el sistema lo incorpora a su librería de traps.
 
Una vez que se ha subido el sistema lo incorpora a su librería de traps.
Line 291: Line 278:
 
==Alertas con traps SNMP complejos==
 
==Alertas con traps SNMP complejos==
  
Las alertas descritas anteriormente son para ocasiones donde el trap está bien definido, es siempre el mismo, y no tiene una información relevante que debamos rescatar.
+
Las alertas descritas anteriormente son para ocasiones donde el trap está bien definido, es siempre el mismo, y no tiene una información relevante que se deba rescatar.
  
En otras ocasiones nos podemos encontrar con un trap que tiene la siguiente fisionomía:
+
En otras ocasiones puede llegar un trap que tiene la siguiente fisionomía:
  
 
  OID: .1.3.6.1.4.1.2789.2005
 
  OID: .1.3.6.1.4.1.2789.2005
Line 301: Line 288:
 
  .1.3.6.1.4.1.2789.2005.4 = STRING: "4897584AH/345"
 
  .1.3.6.1.4.1.2789.2005.4 = STRING: "4897584AH/345"
  
Este trap ademas de un OID y un valor, contiene una información compleja, basada en varios OID y varios valores. Un trap puede tener, en su parte compleja, una estructura completamente libre, basada en pares de OID y valores  (contadores, numéricos, alfanuméricos, fechas....).
+
Este trap, además de un OID y un valor, contiene una información compleja, basada en varios OID y varios valores. Un trap puede tener, en su parte compleja una estructura completamente libre, basada en pares de OID y valores  (contadores, numéricos, alfanuméricos, fechas, etcétera).
  
 
Este trap se visualizaría en la consola de traps de la siguiente manera:
 
Este trap se visualizaría en la consola de traps de la siguiente manera:
Line 307: Line 294:
 
[[Image:Traps9.JPG|center|800px|Haga clic para ampliar]]
 
[[Image:Traps9.JPG|center|800px|Haga clic para ampliar]]
  
Si nos fijamos en detalle en la información extendida (Variable bindings) existen varios trozos de información útil. Concretamente, el primer campo, con el OID que termina en 2005.1 parece un identificador, el tercer campo con OID acabado en 2005.3 parece un mensaje de error. Los campos 2 y 4 no parecen de mucha utilidad, ya que el 4º por ejemplo, es un código que desconocemos.
+
Si observa en detalle en la información extendida ('''Variable bindings''') existen varios trozos de información útil. Concretamente, el primer campo, con el OID que termina en <code>2005.1</code> parece un identificador, el tercer campo con OID que termina en <code>2005.3</code> parece un mensaje de error. Los campos 2 y 4 no parecen de mucha utilidad, ya que el 4º por ejemplo, es un código que desconocemos.
  
Pensemos que podríamos crear un evento a partir de un trap, colocando partes específicas del trap en el texto, por ejemplo, supongamos que queremos construir un evento que contenga la siguiente información:
+
Se crear un evento a partir de un trap colocando partes específicas del trap en el texto; por ejemplo, se debe construir un evento que contenga la siguiente información:
  
 
  Chassis Alert: <mensaje de error> en dispositivo <identificador>
 
  Chassis Alert: <mensaje de error> en dispositivo <identificador>
  
El reto consiste en crear una alerta que busque coincidencias en esos campos, obtenga el trozo de información y lo use posteriormente para componer una mensaje en una alerta. Podemos hacer esto con Pandora FMS, usando expresiones regulares avanzadas, usando selectores. Puede encontrar más información sobre expresiones regulares aquí:  [http://en.wikipedia.org/wiki/Regular_expression#Expressive_power_and_compactness].
+
El trabajo consiste en crear una alerta que busque coincidencias en esos campos, obtenga el trozo de información y lo use posteriormente para componer una mensaje en una alerta.  
  
Los selectores, que usan los caracteres () permite "copiar" información, usando una expresión de búsqueda.
+
Esto puede ser realizado con Pandora FMS usando expresiones regulares avanzadas y selectores. Puede encontrar más información sobre expresiones regulares [https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular#Descripci%C3%B3n_de_las_expresiones_regulares en este enlace].
 +
 
 +
Los selectores, que usan los caracteres <code>(</code> y <code>)</code> permiten "copiar" información, usando una expresión de búsqueda.
  
 
La expresión regular para obtener el identificador sería la siguiente:
 
La expresión regular para obtener el identificador sería la siguiente:
Line 325: Line 314:
 
  .*.1.3.6.1.4.1.2789.2005.3 \= STRING\: \"([\sA-Za-z]+)\".*
 
  .*.1.3.6.1.4.1.2789.2005.3 \= STRING\: \"([\sA-Za-z]+)\".*
  
Una vez que ya tenemos los campos de información, debemos usarlos en la alerta. Para eso se usan las macros especiales _snmp_f1_, _snmp_f2_, _snmp_f3_ (etc) que sólo tienen sentido en las alertas de traps SNMP.
+
Una vez que tiene los campos de información, deben ser usados en la alerta. Para ello se usan las macros especiales <code>_snmp_f1_</code>, <code>_snmp_f2_</code>, ... <code>_snmp_f''n''_</code>, los cuales tienen sentido en las alertas de traps SNMP.
  
Para construir el mensaje, utilizaríamos la siguiente cadena:
+
Para construir el mensaje, utilizaría la siguiente cadena:
  
 
  Chassis Alert: _snmp_f2_ en dispositivo _snmp_f1_
 
  Chassis Alert: _snmp_f2_ en dispositivo _snmp_f1_
Line 333: Line 322:
 
En resumen, así se crearía la alerta completa:
 
En resumen, así se crearía la alerta completa:
  
[[Image:Compex_trap_def1.png|center|650px]]
+
[[Image:Compex_trap_def1.png|center|640px]]
  
Para hacer este tipo de alertas, es necesario tener buenos conocimientos de Expresiones Regulares, ya que un simple espacio, una comilla o un carácter en el sitio equivocado puede hacer que no funcione. '''Recuerde siempre que las alertas SNMP llevan implícito el uso de expresiones regulares'''. La forma de establecer una alerta más sencilla, usando expresiones regulares, sería la siguiente:
+
Para hacer este tipo de alertas, es necesario tener buenos conocimientos de Expresiones Regulares, ya que un simple espacio, una comilla o un carácter en el sitio equivocado puede hacer que no funcione.  
 +
 
 +
{{Tip|Recuerde siempre que las alertas SNMP llevan implícito el uso de expresiones regulares.}}
 +
 
 +
La forma de establecer una alerta más sencilla, usando expresiones regulares, sería la siguiente:
  
 
[[Image:Compex_trap_def4.png|center|500px]]
 
[[Image:Compex_trap_def4.png|center|500px]]
Line 341: Line 334:
 
=== Ejemplo adicional ===
 
=== Ejemplo adicional ===
  
Esto otro ejemplo, utiliza una alerta de tipo email para enviar información sobre el nombre del interfaz cada vez que se recibe un trap específico que notifica problemas en dicha interfaz. De forma que al email me llega la información del dispositivo y la interfaz, sacando esa información del interior del trap.
+
Esto otro ejemplo, utiliza una alerta de tipo '''eMail''' para enviar información sobre el nombre de la interfaz cada vez que se recibe un trap específico que notifica problemas en dicha interfaz. De forma que al correo electrónico llega la información del dispositivo y la interfaz, obteniendo esa información del interior del trap.
  
Este es el trap recibido del switch:
+
Este es el trap recibido del ''switch'':
  
 
[[Image:Another_trap_alert_sample.png|center|800px|Haga clic para ampliar]]
 
[[Image:Another_trap_alert_sample.png|center|800px|Haga clic para ampliar]]
  
Así es como quiero que me llegue el mail
+
De esta manera se necesita el mensaje de correo:
  
 
[[Image:trap_email.png|center|700px]]
 
[[Image:trap_email.png|center|700px]]
  
Así es como defino el trap.
+
El trap debe ser definido en Pandora FMS de la siguiente manera:
  
 
[[Image:another_snmp_trap_sample.png|center|630px]]
 
[[Image:another_snmp_trap_sample.png|center|630px]]
Line 359: Line 352:
 
== Asociar un trap al resto de alertas de Pandora / SNMP Agent trap forwarding ==
 
== Asociar un trap al resto de alertas de Pandora / SNMP Agent trap forwarding ==
  
Las alertas definidas sobre traps son completamente independientes del motor de alertas de Pandora FMS, por lo que no se pueden establecer correlaciones del tipo “salta una alarma si la temperatura sube a 29 grados y salta el trap de caída de fuente secundaria de alimentación”.  Tampoco se pueden representar alertas de este tipo (ya que no están -en principio- asociadas a ningún modulo de Pandora FMS, con lo que no se puede relacionar la monitorización de la consola de traps con elementos tales como informes o mapas.
+
Las alertas definidas sobre traps son completamente independientes del motor de alertas de Pandora FMS, por lo que no se pueden establecer correlaciones del tipo “''salta una alarma si la temperatura sube a 29 grados y salta el trap de caída de fuente secundaria de alimentación''”.  Tampoco se pueden representar alertas de este tipo (ya que no están -en principio- asociadas a ningún modulo de Pandora FMS) con lo que no se puede relacionar la monitorización de la consola de traps con elementos tales como informes o mapas.
  
  
''Modulo especial SNMPTrap, conteniendo el trap reenviado desde la consola SNMP'':
+
''Modulo especial SNMPTrap, conteniendo el trap reenviado desde la consola SNMP:''
  
 
[[Image:Snmptrap_agent.png|center|700px]]
 
[[Image:Snmptrap_agent.png|center|700px]]
  
Para poder hace esto, existe un método llamado "Agent SNMP Trap Forwarding". Esta opción (general al servidor) reenvía el trap a un modulo especial del agente llamado "SNMPTrap" como cadena de texto, si y solo si, la direccion IP origen del trap está definida como IP de un agente. Cuando esto ocurre, el trap llega como una línea de texto al agente dentro de ese módulo, que es un módulo que se define solo cuando llega el primer trap.
+
Para poder hace esto, existe en Pandora FMS un método llamado '''Agent SNMP Trap Forwarding'''. Esta opción (general al servidor) reenvía el trap a un Módulo especial del Agente llamado '''SNMPTrap''' como cadena de texto, si y solo si, la dirección IP origen del trap está definida como IP de un agente. Cuando esto ocurre, el trap llega como una línea de texto al Agente dentro de ese Módulo, que es un Módulo que se define solo cuando llega el primer trap.
  
Sobre ese módulo se pueden especificar alertas de texto, siendo estas completamente estándar, como las de cualquier módulo. Esto permite personalizar la monitorización SNMP para que ciertos traps, de ciertos orígenes puedan ser tratados como un módulo más, y así integrarlo en el resto de la monitorización, incluyendo la correlación de alertas.
+
Sobre ese Módulo se pueden especificar alertas de texto, siendo estas completamente estándar, como las de cualquier módulo. Esto permite personalizar la monitorización SNMP para que ciertos traps, de ciertos orígenes puedan ser tratados como un módulo más, y así integrarlo en el resto de la monitorización, incluyendo la correlación de alertas.
  
''Aspecto que tiene el modulo "SNMPTrap"'':
+
''Aspecto que tiene el modulo "SNMPTrap":''
  
 
[[Image:Snmptrapforward2.png|center|600px]]
 
[[Image:Snmptrapforward2.png|center|600px]]
  
Esta es una característica ''Enterprise'' y se configura en la sección principal de configuración de Pandora FMS, con una opción como la de la imagen:
+
Esta es una característica ''Enterprise'' y se configura en '''Setup''' > '''Setup''' > '''Enterprise''' con la siguiente opción:
  
''Opción de configuración para habilitar el reenvío de traps a los agentes'':
+
''Opción de configuración para habilitar el reenvío de traps a los agentes:''
  
 
[[Image:Snmptrap_agent_forwardsetup.png|center|700px]]
 
[[Image:Snmptrap_agent_forwardsetup.png|center|700px]]
  
Si se cambia esta opción, hay que reiniciar el servidor de Pandora FMS para que empieze a actuar.
+
Si se cambia esta opción, hay que reiniciar el servicio del servidor de Pandora FMS para que empiece a actuar.
  
Otra solución es montar una alerta sobre el trap que active un módulo de un agente. Por ejemplo, el trap es escribir en un fichero de logs, y se tiene un agente que lea ese fichero y salte cuando hay un "1" escrito. De esta forma, el módulo saltará cuando se reciba el trap deseado y se podrá establecer la correlación en base al trap recibido.
+
Otra solución es montar una alerta sobre el trap que active un módulo de un agente. Por ejemplo, el trap consiste escribir en un fichero de ''logs'', y se tiene un agente que lee ese fichero y salte cuando hay un "1" escrito. De esta forma, el módulo saltará cuando se reciba el trap deseado y se podrá establecer la correlación en base al trap recibido.
  
 
== Gestor de TRAPS externo ==
 
== Gestor de TRAPS externo ==
  
La consola de SNMP está limitada a recibir traps, ya que solo procesa TRAP como ente individual, pero un trap puede contener muchísima información. A veces ocurre que la única monitorización que podamos hacer está basada en traps. Para ello podemos optar por "postprocesar" la información recogida en un trap a través de un script externo, que actúa a modo de plugin.  
+
La consola de SNMP está limitada a recibir traps, ya que solo procesa TRAP como ente individual, pero un trap puede contener mucha información. '''A veces ocurre que la única monitorización que se puede hacer está basada en traps.''' Para ello se puede optar por "postprocesar" la información recogida en un trap a través de un ''script'' externo, que actúa a modo de ''plugin''.  
  
Para procesar los datos de un trap con detalle, se puede enviar toda la información de un trap a un script, como resultado de una alerta. Se ha usado este trap para el ejemplo, es la vista del trap tal y como se vería en el log de la consola de SNMP de Pandora FMS:
+
Para procesar los datos de un trap con detalle, se puede enviar toda la información de un trap a un ''script'', como resultado de una alerta. Este ejemplo es tal y como se vería en el ''log'' de la consola de SNMP de Pandora FMS:
  
  
Line 402: Line 395:
 
[[Image:SNMP3.JPG|center|800px]]
 
[[Image:SNMP3.JPG|center|800px]]
  
En las capturas se puede ver cómo se crearía una alerta especial, que ejecuta un script con los contenidos completos del trap (_data_) y cómo se crea la alerta de tipo SNMP. En este caso se ha mapeado para la OID Especifica (.1.3.6.1.4.1.1722.2.10.1.1.1) pero podría haber sido mas genérica, por ejemplo (.1.3.6.1.4.1.1722) para invocar al script ante cualquier tipo de traps de esta tipología (.1.3.6.1.4.1.1722 imagino que serán parte de la MIB especifica de AIX).
+
En las capturas se puede ver cómo se crearía una alerta especial, que ejecuta un script con los contenidos completos del trap ( <code>_data_</code> ) y cómo se crea la alerta de tipo SNMP. En este caso se ha mapeado para la OID Especifica (<code>.1.3.6.1.4.1.1722.2.10.1.1.1</code>) pero podría haber sido mas genérica, por ejemplo (<code>.1.3.6.1.4.1.1722</code>) para invocar al ''script'' ante cualquier tipo de traps de esta tipología.
  
Se ejecuta un script que procesa esos datos y "analiza" el trap para escribir datos en Pandora  FMS directamente, generando un XML y dejándolo en /var/spool/pandora/data_in a modo de datos como si vinieran de un agente. Un script básico para este caso podría por ejemplo, generar información compleja ya que tenemos bastante información en este trap, a saber:
+
Se ejecuta un ''script'' que procesa esos datos y "analiza" el trap para escribir datos en Pandora  FMS directamente, generando un XML y dejándolo en <code>/var/spool/pandora/data_in</code> a modo de datos como si vinieran de un agente. Un ''script básico'' para este caso podría, por ejemplo, generar información compleja ya que se tiene bastante información en este trap, a saber:
  
 
* IP Origen.
 
* IP Origen.
Line 410: Line 403:
 
* Eventos secundarios (descriptivos): AIX_Software_Failure, 1: A software error PERM with label CORE_DUMP, identifier C69F5C9B occurred at Wed Aug 2 5 10:22:28 DFT 2010 on dvs02 for resource SYSPROC. Cause is SOFTWARE PROGRAM ABNORMALLY TERMINATED, An application may not work properly, An application may not work properly.
 
* Eventos secundarios (descriptivos): AIX_Software_Failure, 1: A software error PERM with label CORE_DUMP, identifier C69F5C9B occurred at Wed Aug 2 5 10:22:28 DFT 2010 on dvs02 for resource SYSPROC. Cause is SOFTWARE PROGRAM ABNORMALLY TERMINATED, An application may not work properly, An application may not work properly.
  
Al diseñar un script que "parsee" cada uno de esos datos, por ejemplo "miscript.pl" y que guarde  en /var/spool/pandora/data_in el XML con un nombre genérico más un número aleatorio p.e snmp_gateway.31415.data
+
Al diseñar un script que "parsee" cada uno de esos datos, por ejemplo "miscript.pl" y que guarde  en <code>/var/spool/pandora/data_in</code> el XML con un nombre genérico más un número aleatorio como, por ejemplo: <code>snmp_gateway.31415.data</code>
  
 
El XML generado debería tener el siguiente aspecto.
 
El XML generado debería tener el siguiente aspecto.
Line 436: Line 429:
 
</pre>
 
</pre>
  
La aplicación de esta tecnología es infinita, pero eso si, cada script debe ser particularizado ya que puede tener una estructura muy dinámica, en muchos sistemas la información que se recibe, no solo es de texto,  si no también numérica, con lo que puede alimentar a módulos de información numéricos y así representar gráficas etc. Eso sí, habrá que tener en cuenta que '''los datos generados en el XML deberían ser siempre de tipo asíncrono'''.
+
La aplicación de esta tecnología es sumamente amplia por ello cada ''script'' debe ser particularizado ya que puede tener una estructura muy dinámica. En muchos sistemas la información que se recibe, no solo es de texto,  si no también numérica, con lo que puede alimentar a módulos de información numéricos y así representar gráficas etc. Siempre habrá que tener en cuenta que '''los datos generados en el XML deberían ser siempre de tipo asíncrono'''.
  
 
=== Ejemplo práctico: Monitorización ESX utilizando traps ===
 
=== Ejemplo práctico: Monitorización ESX utilizando traps ===
  
Una de las cosas más problemáticas de monitorizar es la infraestructura "distribuida", más si cada versión cambia su implementación para reunir información, como VmWare ESX. En este pequeño capítulo intentaremos explicar cómo monitorizar los sistemas ESX utilizando un gestor externo de Traps SNMP.
+
Una de los asuntos más problemáticos de monitorizar es la infraestructura "distribuida", más si cada versión cambia su implementación para reunir información, como VmWare ESX. Este pequeño capítulo intenta explicar cómo monitorizar los sistemas ESX utilizando un gestor externo de Traps SNMP.
  
 
Los traps ESX son como estos:
 
Los traps ESX son como estos:
Line 456: Line 449:
 
  Storage space actually used = 55%"
 
  Storage space actually used = 55%"
  
Tal como se puede ver, los traps son utilizados para recolectar información del CPU, el Disco, o la Memoria. La idea general detrás del gestor de traps es escribir un pequeño script que sea capaz de "entender" el trap y crear un XML simulando un agente de software. De este modo, para cada tecnología deberías escribir un gestor de trap, pero todo el proceso es común. El proceso para entender esto está explicado en cuatro pasos:
+
Tal como se observa, los traps son utilizados para recolectar información del CPU, el Disco, o la Memoria. La idea general detrás del gestor de traps es escribir un pequeño ''script'' que sea capaz de "entender" el trap y crear un XML simulando ser un Agente Software. '''De este modo, para cada tecnología debería escribir un gestor de trap, pero todo el proceso es común.''' El proceso para entender esto está explicado en cuatro pasos:
  
# Crear el handler script. Puedes basar tu trabajo en el script que te proporcionamos más abajo.
+
# Crear el ''handler script''. Puede basar su trabajo en el ''script'' que se proporciona más abajo.
# Crear un comando de alerta  
+
# Crear un comando de alerta.
# Crear una acción de alerta utilizando comandos anteriores. Algunas veces, con opciones personalizadas para cada agente "destinatario" que desees (si tienes varios grupos de ESX, te gustará seguramente tener datos en diferentes agentes).
+
# Crear una acción de alerta utilizando comandos anteriores. Algunas veces, con opciones personalizadas para cada agente "destinatario" que desee (si tiene varios grupos de ESX, de seguro optará por tener datos en diferentes agentes).
 
# Crear una alerta de Trap SNMP que mapee el OID Enterprise (la información del trap para todos los tipos de esta tecnología específica y/o la dirección IP del trap fuente.
 
# Crear una alerta de Trap SNMP que mapee el OID Enterprise (la información del trap para todos los tipos de esta tecnología específica y/o la dirección IP del trap fuente.
 
Veamos el primer paso: crear el script de manipulador de traps:
 
  
 
==== Paso 1:Trap handler: esx_trap_manager.pl ====
 
==== Paso 1:Trap handler: esx_trap_manager.pl ====
Line 540: Line 531:
 
==== Paso 2: Crear el comando de alerta====
 
==== Paso 2: Crear el comando de alerta====
  
En este ejemplo, se ha puesto el script del comando en /tmp, póngalo en un lugar más seguro, y asegúrese de que se pueda ejecutar (chmod 755):
+
En este ejemplo, se ha puesto el ''script'' del comando en <code>/tmp</code>, cambie a una ubicación adecuada y asegúrese de que se pueda ejecutar (<code>chmod 755</code>):
  
<center><br><br>
+
[[Image:SNMP3.JPG|750px|center]]
[[image:SNMP3.JPG|750px|center]]
 
</center><br><br>
 
  
 
==== Paso 3: Crear la acción de la alerta ====
 
==== Paso 3: Crear la acción de la alerta ====
  
Crea una acción específica para enviar toda la información a traps de agentes específicos. En este caso, la información será enviada a un agente llamado WINN1247VSR. El comando de arriba acepta como parámetros el nombre del agente que llevará toda la información (ESX Virtual Center), y "trozos" de datos del TRAP, que puede ser ilimitado e incluye toda la información que se envía al trap.
+
Crea una acción específica para enviar toda la información a traps de agentes específicos. En este caso, la información será enviada a un agente llamado <code>WINN1247VSR</code>. El comando de arriba acepta como parámetros el nombre del agente que llevará toda la información (<code>ESX Virtual Center</code>), y "trozos" de datos del TRAP, que puede ser ilimitado e incluye toda la información que se envía al trap.
  
 
[[Image:SNMP4.JPG|center|800px]]
 
[[Image:SNMP4.JPG|center|800px]]
Line 554: Line 543:
 
==== Paso 4: Crear la alerta SNMP====
 
==== Paso 4: Crear la alerta SNMP====
  
Configura los traps de alerta utilizando la acción que acabas de crear.
+
Configure los traps de alerta utilizando la acción que acaba de crear, para procesar todos los traps de Tecnología ESX, que este encontrará, utilizando el OID específico <code>.1.3.6.1.4.1.6876.4.3.301</code> para mapear los traps ESX.  
  
 
[[Image:SNMP5.JPG|center|600px]]
 
[[Image:SNMP5.JPG|center|600px]]
  
Para procesar todos los traps de Tecnología ESX, que este encontrará, utilizando el OID específico .1.3.6.1.4.1.6876.4.3.301  para mapear los traps ESX. También podemos filtrar por fuente de IP para cada Centro Virtual, mediante el filtrado por dirección IP de origen (enviado en el Trap).
+
También puede filtrar por fuente de IP para cada Centro Virtual, mediante el filtrado por dirección IP de origen (enviado en el Trap).
  
 
==== Visualización de Datos ====
 
==== Visualización de Datos ====
  
Esto es un ejemplo de cómo se verá la información. Con estos datos, podrás gestionarla como módulos estándar.
+
Esto es un ejemplo de cómo se verá la información. Con estos datos, podrá gestionarla como módulos estándar.
  
 
[[Image:SNMP6.JPG|center|800px|Haga clic para ampliar]]
 
[[Image:SNMP6.JPG|center|800px|Haga clic para ampliar]]
Line 568: Line 557:
 
[[Image:SNMP7.JPG|center|800px]]
 
[[Image:SNMP7.JPG|center|800px]]
  
== SNMP trap forwarding ( > v5.0 ) ==
+
== SNMP trap forwarding ==
 +
 
 +
Con Pandora FMS es posible habilitar el reenvío de traps SNMP a un ''host'' externo habilitando el [[Pandora:Documentation_en:Configuration#snmp_forward_trap| snmp_forward_trap]] en el ''token'' en el fichero de configuración de Pandora.
 +
 
  
Con Pandora FMS es posible habilitar el reenvío de traps SNMP a un host externo habilitando el [http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_en:Configuration#.28.3E.3D_5.X.29_snmp_forward_trap snmp_forward_trap] token en el fichero de configuración de Pandora.
 
  
 
=== Ejemplo de configuración para reenvío de traps usando SNMP v1 ===
 
=== Ejemplo de configuración para reenvío de traps usando SNMP v1 ===
Line 600: Line 591:
 
=== Ejemplo de configuración para reenvío de traps usando SNMP v3 ===
 
=== Ejemplo de configuración para reenvío de traps usando SNMP v3 ===
  
Este ejemplo es particularmente complicado debido al conocimiento requerido en SNMP v3. Vamos a suponer que el agente SNMP remoto definido en [http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_en:Configuration#.28.3E.3D_5.X.29_snmp_forward_ip snmp_forward_ip] tiene la siguiente entrada en su fichero de configuración /etc/snmp/snmptrapd.conf:
+
Este ejemplo es particularmente complicado debido al conocimiento requerido en SNMP v3. Vamos a suponer que el agente SNMP remoto definido en [[Pandora:Documentation_es:Configuracion#snmp_forward_ip|snmp_forward_ip]] tiene la siguiente entrada en su fichero de configuración <code>/etc/snmp/snmptrapd.conf</code>:
  
 
  createUser -e 0x0102030405 myuser MD5 mypassword DES myotherpassword
 
  createUser -e 0x0102030405 myuser MD5 mypassword DES myotherpassword
Line 617: Line 608:
 
  snmp_forward_secLevel authNoPriv
 
  snmp_forward_secLevel authNoPriv
  
Más información en [http://net-snmp.sourceforge.net/wiki/index.php/TUT:snmptrap_SNMPv3#SNMPv3_TRAPs NET-SNMP v3 Traps]
+
Para más información visite [http://net-snmp.sourceforge.net/wiki/index.php/TUT:snmptrap_SNMPv3#SNMPv3_TRAPs NET-SNMP v3 Traps]
 +
 
  
  
Line 623: Line 615:
 
== Gestión independiente del demonio snmptrapd  ==
 
== Gestión independiente del demonio snmptrapd  ==
  
Es posible que por alguna razón prefiera gestionar el demonio ''snmptrapd'' de forma independiente a Pandora FMS (para pararlo o levantarlo de forma independiente al Daemon principal de Pandora FMS). Para ello, debe tener en cuenta varias cosas:
+
Es posible que por alguna razón prefiera gestionar el demonio '''snmptrapd''' de forma independiente a Pandora FMS (para detenerlo o iniciarlo de forma independiente al ''Daemon'' principal de Pandora FMS). Para ello, debe tener en cuenta varias cosas:
  
1. Debe activar igualmente el parámetro ''snmpconsole'' en el servidor de Pandora FMS.
+
1. Debe activar igualmente [[Pandora:Documentation_es:Configuracion#snmpconsole|el parámetro]] <code>snmpconsole</code> en el servidor de Pandora FMS.
  
2. Los logs configurados en el servidor de Pandora FMS deben ser los mismos que se generen en la llamada independiente a ''snmptrapd''
+
2. Los ''logs'' configurados en el servidor de Pandora FMS deben ser los mismos que se generen en la llamada independiente a '''snmptrapd'''
  
3. La llamada a ''snmptrapd'' debe tener un formato específico '''no vale la llamada al demonio estándar del sistema'''. La llamada debe ser como esta (el parámetro -A es especialmente importante!):
+
3. La llamada a '''snmptrapd''' debe tener un formato específico '''ya que la llamada al demonio estándar del sistema es inválida'''. La llamada debe ser como esta (el parámetro <code>-A</code> es especialmente importante):
  
 
<pre>
 
<pre>
Line 635: Line 627:
 
</pre>
 
</pre>
  
4. Debe configurar en el fichero de configuración del servidor, el token:
+
4. Debe configurar en el fichero de configuración del servidor, el ''token'':
  
 
  snmp_trapd manual
 
  snmp_trapd manual
  
5. Cuando establezca este funcionamiento. Debe realizar la siguiente operación:
+
5. Cuando establezca este funcionamiento debe realizar la siguiente operación:
  
* Cambiar la configuración en /etc/pandora/pandora_server.conf
+
* Cambiar la configuración en <code>/etc/pandora/pandora_server.conf</code>.
* Parar el servidor de Pandora FMS.
+
* Detener el servidor de Pandora FMS.
* Verificar que el proceso snmptrapd ya no se ejecuta (y si es así, esperar a que se muera o matarlo)
+
* Verificar que el proceso '''snmptrapd''' ya no se ejecuta (y si es así, esperar a que "muera" o "matarlo").
* Arrancar snmptrapd manualmente (con el formato indicado arriba).
+
* Arrancar '''snmptrapd''' manualmente (con el formato indicado arriba).
 
* Arrancar el servidor de Pandora FMS.
 
* Arrancar el servidor de Pandora FMS.
  
 
=== Gestión del fichero de log de traps ===
 
=== Gestión del fichero de log de traps ===
  
El proceso ''snmptrapd'' puede ser parado y arrancando sin necesidad de parar y arrancar el proceso de Pandora FMS server, siempre y cuando que los ficheros ''pandora_snmptrap.log.index'' y ''pandora_snmptrap.log'' no sean modificados. Si estos ficheros son modificados, es preciso reiniciar el servidor de Pandora FMS. Si necesita rotar de forma externa el log de traps, deberá reiniciar el servidor de Pandora FMS después de borrar los ficheros anteriormente mencionados.
+
El proceso ''snmptrapd'' puede ser parado y arrancando sin necesidad de parar y arrancar el proceso de Pandora FMS server, siempre y cuando que los ficheros <code>pandora_snmptrap.log.index</code> y <code>pandora_snmptrap.log</code> no sean modificados. Si estos ficheros son modificados, es preciso reiniciar el servidor de Pandora FMS. Si necesita rotar de forma externa el ''log'' de traps, deberá reiniciar el servidor de Pandora FMS después de borrar los ficheros anteriormente mencionados.
  
 
== Buffering de traps SNMP ==
 
== Buffering de traps SNMP ==
  
Si los traps SNMP se envían a un manager externo a través de una conexión poco fiable se perderá parte de la información. Pandora FMS le permite, en vez de eso, reenviar los traps desde un ''snmptrapd'' local a su servidor de Pandora FMS de una forma fiable.
+
Si los traps SNMP se envían a un manager externo a través de una conexión poco fiable se perderá parte de la información. Pandora FMS le permite, en vez de eso, reenviar los traps desde un '''snmptrapd''' local a su servidor de Pandora FMS de una forma fiable.
  
 
=== Arquitectura ===
 
=== Arquitectura ===
Line 659: Line 651:
 
[[Image: Remote snmp trap schema.jpg|center|600px]]
 
[[Image: Remote snmp trap schema.jpg|center|600px]]
  
* Un agente SNMP envía traps a un ''snmptrapd'' local.
+
* Un agente SNMP envía traps a un '''snmptrapd''' local.
* Un agente de Pandora FMS local lee traps del fichero de log de ''snmptrapd's'' y los manda al servidor de Pandora FMS designado dentro de un fichero de datos XML, guardándolo en el buffer de XML y reintentándolo más tarde si fuese necesario.
+
* Un agente de Pandora FMS local lee los traps del fichero de ''log'' de '''snmptrapd''' y los manda al servidor de Pandora FMS designado dentro de un fichero de datos XML, guardándolo en el buffer de XML y reintentándolo más tarde si fuese necesario.
 
* El Data Server lee traps de ficheros de datos XML y los vuelca en un fichero de texto plano.
 
* El Data Server lee traps de ficheros de datos XML y los vuelca en un fichero de texto plano.
 
* La consola SNMP procesa los traps desde el fichero de texto plano.
 
* La consola SNMP procesa los traps desde el fichero de texto plano.
  
{{Warning|Es más eficiente que la consola SNMP procese directamente los traps desde el fichero de log ''snmptrapd's''. Esta configuración se recomienda sólo si la fiabilidad o la conectividad directa son motivo de preocupación.}}
+
{{Warning|Es más eficiente que la consola SNMP procese directamente los traps desde el fichero de ''log'' de '''snmptrapd'''. Esta configuración se recomienda sólo si la fiabilidad o la conectividad directa son motivo de preocupación.}}
  
 
=== Prerequisitos ===
 
=== Prerequisitos ===
  
* Un ''snmptrapd'' local que está recibiendo traps.
+
* Un '''snmptrapd''' local que está recibiendo traps.
 
* Un agente de Pandora FMS local.
 
* Un agente de Pandora FMS local.
 
* Una instalación de Pandora FMS.
 
* Una instalación de Pandora FMS.
Line 676: Line 668:
 
==== snmptrapd ====
 
==== snmptrapd ====
  
Edite el fichero ''/etc/snmp/snmptrapd.conf'' y asegúrese de que está logueando a un fichero en un formato compatible con Pandora FMS (puede cambiar el nombre del fichero de log si fuese necesario):
+
Edite el fichero <code>/etc/snmp/snmptrapd.conf</code> y asegúrese de que está guardando ''logs'' a un fichero en un formato compatible con Pandora FMS (puede cambiar el nombre del fichero de ''log'' si fuese necesario):
  
 
  [snmp] logOption f /var/log/snmptrapd.log
 
  [snmp] logOption f /var/log/snmptrapd.log
Line 684: Line 676:
 
==== Agente de Pandora FMS ====
 
==== Agente de Pandora FMS ====
  
Utilizaremos el plug-in ''grep_snmptrapd'' que viene con el agente de Pandora FMS para leer datos del fichero de log de ''snmptrapd''.
+
Se utilizará el ''plugin'' '''grep_snmptrapd''' que viene con el Agente de Pandora FMS para leer datos del fichero de ''log'' de '''snmptrapd'''.
  
Edite el fichero de configuración del agente local, ''/etc/pandora/pandora_agent.conf'', y añada la siguiente línea, ajustando el path del fichero de log de ''snmptrad'' si fuese necesario:
+
Edite el fichero de configuración del agente local, <code>/etc/pandora/pandora_agent.conf</code>, y añada la siguiente línea, ajustando la vía del fichero de ''log'' de '''snmptrad''' si fuese necesario:
  
 
  module_plugin grep_snmptrapd /var/log/snmptrapd.log
 
  module_plugin grep_snmptrapd /var/log/snmptrapd.log
Line 692: Line 684:
 
==== Servidor de Pandora FMS ====
 
==== Servidor de Pandora FMS ====
  
Tenemos que indicarle a la Consola SNMP que procese traps de un fichero de log externo escrito por el Data Server.
+
Debe indicarle a la Consola SNMP que procese traps de un fichero de ''log'' externo escrito por el Data Server.
  
Edite el fichero de configuración del servidor, ''/etc/pandora/pandora_server.conf'', y:
+
Edite el fichero de configuración del servidor <code>/etc/pandora/pandora_server.conf</code>:
  
 
* Asegúrese de que la Consola SNMP está habilitada:
 
* Asegúrese de que la Consola SNMP está habilitada:
Line 704: Line 696:
 
  dataserver 1
 
  dataserver 1
  
* Configure un fichero de log SNMP externo. Si no existe, la Consola SNMP lo creará:
+
* Configure un fichero de ''log'' SNMP externo. Si no existe, la Consola SNMP lo creará:
  
 
  snmp_extlog /var/log/pandora/pandora_snmptrap.ext.log
 
  snmp_extlog /var/log/pandora/pandora_snmptrap.ext.log
  
{{Warning|''snmp_extlog'' puede ser cualquier fichero en el que el servidor de Pandora FMS pueda escribir, pero tiene que ser distinto de ''snmp_logfile'' (también definido en ''/etc/pandora/pandora_agent.conf'').}}
+
{{Warning|'''snmp_extlog''' puede ser cualquier fichero en el que el servidor de Pandora FMS pueda escribir, pero tiene que ser distinto de '''snmp_logfile''' (también definido en <code>/etc/pandora/pandora_agent.conf</code>).}}
  
 
== Generador de Traps ==
 
== Generador de Traps ==
  
Con esta herramienta se pueden generar traps personalizados que posteriormente podremos observar en la consola SNMP.
+
Esta herramienta permite generar traps personalizados que posteriormente puede observar en la consola SNMP.
 
 
  
 
[[Image:Generador_de_traps.png|center|650px]]
 
[[Image:Generador_de_traps.png|center|650px]]
  
Para poder configurar correctamente el generador de traps deberemos rellenar los siguientes campos:
+
Para poder configurar correctamente el generador de traps debe rellenar los siguientes campos:
  
* '''Host Address''': Es la IP de destino a la que vamos a mandar el trap.  
+
;Host Address: Dirección IP destino a la que va a enviar el trap.  
* '''Community''': Donde estableceremos la contraseña de la comunidad SNMP a la que intentamos acceder con el generador de traps.
+
;Community: Contraseña de la comunidad SNMP a la que intenta acceder con el generador de traps.
* '''Enterprise String'''Aquí se debe de configurar el OID (Object Identifier) del trap. Por ejemplo: 1.3.6.1.2.1.2.2.1.8
+
;Enterprise String:  Configure el OID (Object Identifier) del trap. Por ejemplo: <code>1.3.6.1.2.1.2.2.1.8</code>.
* '''Value''': El valor que le queramos dar el trap y que luego nos aparecerá como Data.
+
;Value: El valor que desee dar al trap y que luego aparecerá como Data.
* '''SNMP Agent''': Debemos introducir el agente donde vamos a simular el trap, poniendo obligatoriamente la IP del mismo.  
+
;SNMP Agent: Introduzca el agente donde vamos a simular el trap, obligatoriamente coloque la dirección IP del mismo.  
* '''SNMP Type''': Tendremos que escoger un tipo de SNMP entre las siguientes opciones:
+
;SNMP Type: Escoja un tipo de SNMP entre las siguientes opciones:
 
** '''Cold Start''': Indica que el agente se ha iniciado o reiniciado.
 
** '''Cold Start''': Indica que el agente se ha iniciado o reiniciado.
 
** '''Warm Start''': Indica que la configuración del agente ha sido modificada.
 
** '''Warm Start''': Indica que la configuración del agente ha sido modificada.
 
** '''Link down''': Indica que la interfaz de comunicación está fuera de servicio (inactiva).
 
** '''Link down''': Indica que la interfaz de comunicación está fuera de servicio (inactiva).
 
** '''Link up''': Indica que una interfaz de comunicación se ha activado.
 
** '''Link up''': Indica que una interfaz de comunicación se ha activado.
** '''Authentication failure''': Indica que el agente recibió una solicitud de un NMS no autorizado (controlado por la comunidad)
+
** '''Authentication failure''': Indica que el agente recibió una solicitud de un NMS no autorizado (controlado por la comunidad).
** '''EGP neighbor loss''': Indica que en los sistemas donde los enrutadores que usan el protocolo EGP, un host cercano está fuera de servicio.
+
** '''EGP neighbor loss''': Indica que en los sistemas donde los enrutadores que usan el protocolo EGP, un ''host'' cercano está fuera de servicio.
** '''Enterprise''': En esta categoría se encuentran todos los traps nuevos. Incluidas los traps de proveedores.
+
** '''Enterprise''': En esta categoría se encuentran todos los traps nuevos, incluidas los traps de proveedores.
  
[[Pandora:Documentation|Volver a Indice de Documentacion Pandora FMS]]
+
[[Pandora:Documentation|Volver al Índice de Documentación Pandora FMS]]
  
 
[[Category:Documentation]]
 
[[Category:Documentation]]
 
[[Category: Pandora FMS]]
 
[[Category: Pandora FMS]]

Latest revision as of 14:36, 11 February 2021

Volver al Índice de Documentación Pandora FMS


Contents

1 Operación con traps SNMP

1.1 Introducción

Los dispositivos de red que soportan SNMP, como switches, routers, servidores, impresoras o Access Panel pueden enviar alarmas (o traps SNMP) cuando suceden determinados eventos, tales como caída de un interfaz, la carga de la CPU o de la red es muy alta, un sistema de alimentación ininterrumpida (SAI o UPS) cambia de estado o se llena una partición de disco. Cada dispositivo tiene su propia "colección" de posibles eventos, que se refleja en una colección, llamaba MIB, en este caso, diferente de la MIB utilizada para hacer consultas al dispositivo.

Trap-example.png

Los traps son enviados solo cuando sucede algo, de forma asíncrona (no repetitiva en el tiempo) por el dispositivo hacia un receptor de traps SNMP. Pandora FMS tiene una consola de recepción de traps que permite visualizar los traps que envían los objetos monitorizados y añadir alertas a dichos traps. Los traps SNMP se reciben a través del demonio del sistema operativo que el servidor SNMP de Pandora FMS arranca cuando el servidor de Pandora FMS se inicia. Este demonio, almacena los traps en un log ubicado por defecto en

/var/log/pandora/pandora_snmptrap.log

Los traps se reciben generalmente en formato "crudo", es decir, con OID numéricos, a no ser que una MIB instalada en el Sistema Operativo sea capaz de resolverlos. La consola SNMP de Pandora FMS Enterprise permite crear reglas para renombrar las OID numéricas a OID de tipo alfanuméricas o simples cadenas de texto descriptivas (ej. "Se ha caído la interfaz") de forma que sea más intuitivo trabajar con traps. Pandora FMS también permite cargar los MIB de traps de cualquier fabricante para definir automáticamente esas reglas, puede obtener más información en el vídeo tutorial «Carga de MIBs en Pandora FMS».

Para poder trabajar con traps SNMP, primero modifique el siguiente parámetro en /etc/pandora/pandora_server.conf para activar la Consola SNMP:

snmpconsole 1

Si quiere que los traps le aparezcan traducidos (ya sean los enlaces variables o la cadena Enterprise) deberá activar los siguientes parámetros (sólo en la versión Enterprise):

translate_variable_bindings 1
translate_enterprise_strings 1

También debe configurar el archivo /etc/snmp/snmptrapd.conf con los parámetros necesarios, por ejemplo:

authCommunity log public
disableAuthorization yes

Con esta configuración, los traps se crearán para la comunidad public y no requerirán autorización.

1.1.1 SNMPv3

Los traps SNMPv3 son rechazados a menos que el usuario que los envía se añada a /etc/snmp/snmptrapd.conf utilizando la directiva createUser. Por ejemplo:

disableAuthorization yes
createUser -e 0x0102030405 snmpv3user SHA mypassword AES

Template warning.png

Se debe especificar el engineID con la opción -e. De lo contrario, sólo se recibirán INFORMs SNMPv3.

 


1.2 Acceso a la consola de recepción de traps

Para acceder a la consola de recepción de traps vaya a Monitoring > SNMP > SNMP Console donde aparece la lista de traps que se han recibido. Mediante el icono de la lupa se puede desplegar toda la información del trap, igual que ocurre con los eventos. En esta sección dispone de la información detallada de un trap SNMP cualquiera.

Traps.JPG

Para cada trap aparecen las siguientes columnas:

Status
Cuadrado verde si el trap se ha validado y rojo si no se ha validado.
SNMP Agent
Agente que ha enviado el trap.
Enterprise string
OID o Object Identifier' (Identificador de Objeto) del trap enviado. Un trap solo puede enviar un dato en este campo.
Time Stamp
Tiempo que ha transcurrido desde que se ha recibido el trap.
Alerta
Cuadrado amarillo si se ha lanzado alguna alerta con este trap o cuadrado gris, si no se ha lanzado ninguna alerta.
Acción
Acción con botones para validar o borrar el trap.

Colores

Además los traps tienen un color (visto como color de fondo de la línea del trap) diferente según el tipo de trap.

  • Azul: los traps de tipo mantenimiento.
  • Morado: los traps de tipo información.
  • Verde: los traps de tipo normal.
  • Amarillo: los traps de tipo warning.
  • Rojo: los traps de tipo critical.

Al hacer clic en Toggle Filter aparecen o desaparecen los campos para filtrar traps.

Alert.png

1.2.1 Validar traps

Con el fin de realizar una gestión efectiva de los traps, es posible validar los mismos para que el administrador pueda discriminar entre los traps que ha visto y los que no ha visto.

Para validar un trap haga clic sobre el círculo a la izquierda del trap.

Traps2.JPG

También es posible validar múltiples traps marcándolos y pulsando el botón Validate.

1.2.2 Borrar traps

Es posible borrar traps una vez que los mismos se han tratado, bien individualmente o mediante selección múltiple y acción Delete.

Traps3.JPG

Para evitar que los traps se acumulen, existe una opción de configuración que por defecto borra los traps transcurridos hace más de 10 días automáticamente.

1.3 Alertas de Traps SNMP

1.3.1 Introducción

Pandora FMS también dispone de un sistema de alertas para los traps SNMP que recibe. Se basan principalmente en reglas de filtrado, buscando coincidencias en todos los campos posibles de acuerdo a reglas que configure para disparar la alerta. Puede obtener más información sobre las alertas de Pandora FMS en este enlace.

1.3.2 Añadir una alerta

Las alertas de traps SNMP tienen varios campos que se utilizarán para buscar coincidencias en los trap SNMP recibidos en la consola. Pueden utilizarse de forma opcional los campos que se quieran para crear reglas más generales o más específicas en función de la necesidad:

AlertSNMP1.png


Enterprise String
OID principal del Trap. Se buscará la presencia de la cadena, pudiendo incluso ser un trozo del OID; por ejemplo 1.21.34.2.3 en un OID más largo. Puede emplearlo del mismo modo en el campo, y realizará la búsqueda como si se tratase de: *1.21.34.2.3* (es innecesario emplear asteriscos como caracteres comodines).
Custom Value/OID
Busca en los campos Value del trap, así como en los campos Custom OID y Custom Value, es decir, en el resto de campos del TRAP. Aquí funciona la búsqueda por expresión regular. Por ejemplo si tiene un trap que envía la cadena "Testing TRAP 225" es posible buscar cualquier trap con la subcadena "Testing TRAP" mediante la expresión regular "Testing.*TRAP.*"
SNMP Agent
Dirección IP del Agente que envía el trap. También permite usar una expresión regular o una subcadena.
Trap type
Filtra por tipo de trap. La mayoría de los traps generados suelen ser de tipo Other; si no especifica nada, buscará cualquier tipo de trap.
Trap type.png
Single value
Filtra por el valor del trap. Esto solo hace referencia al valor simple del OID principal, no de cualquier OID secundario.
Variable bindings/Data #1-20'
Son expresiones regulares que intentan coincidir con las variables 1 a 20. Si hay un acierto, se dispara la alerta. El valor de la variable se guarda en la macro _snmp_fx_ correspondiente (_snmp_f1_, _snmp_f2_, ...). Aunque sólo se puede especificar una expresión regular para veinte variables, las macros _snmp_fx_ macros están disponibles para todas ellas (_snmp_f11_, _snmp_f12_, ...).
AlertSNMP2.png
Field 1
Campo para colocar el parámetro del comando de la alarma Field 1. Este es el campo que se utilizará en el caso de elegir generar un evento, o el correo electrónico de destino en caso de elegir una acción de eMail (si es que se necesita sobreescribir el correo electrónico que tenga por defecto en la acción). Para más información acerca de las alertas en Pandora FMS visite el siguiente enlace
Field 2
Campo para poner el parámetro del comando de la alarma Field 2. Por ejemplo, en el caso de enviar un correo electrónico, será el asunto del mensaje. Si se deja en blanco utilizará lo que haya definido en la acción.
Field 3
Campo para poner el parámetro del comando de la alarma Field 3. El el caso de enviar un correo electrónico, sería el texto del mensaje. Si se deja en blanco utilizará lo que haya definido en la acción.
Min. Number of Alerts
Campo donde se define el mínimo número de traps que tienen que llegar para que salte la alarma.
Max. Number of Alerts
Campo donde se define el número máximo de veces que se ejecutará la acción en el intervalo dado (o time threshold).
Time Threshold
Campo donde se define el tiempo que debe pasar antes de resetear el contador de alarmas. Este contador es el que se usa para el campo Min. Number of alerts.
Priority
Combo donde se establece la prioridad de la alarma. Las prioridades de las alertas son diferentes y no tienen nada que ver con la prioridad de los traps, ni con la de los eventos de Pandora FMS.
Alert Action
Combo donde se determina la acción que va a ejecutar la alerta. Si se elige un evento, el evento normal de generación de alerta no se generará.
Position
Las alertas con menor posición se evalúan primero. Si hay varias alertas con la misma posición que coinciden con el trap, se lanzarán todas las alertas coincidentes con la misma posición. Las de menor posición, aunque coincidan, no se lanzarán.

1.3.3 Macros de fields en las alertas

Se pueden utilizar las siguientes macros en cualquiera de los campos field de las alertas:

  • _data_: Trap entero
  • _agent_: Nombre del Agente
  • _address_: Dirección IP
  • _timestamp_: Fecha trap
  • _snmp_oid_: OID del trap
  • _snmp_value_: Valor del OID del trap

1.3.4 Ejemplo de alerta de traps

Trap sample for alert.jpg

Se tiene un OID principal .1.3.6.1.4.1.2789.2005 que identifica un trap que puede contener mensajes de sobrecalientamiento de CPU (e incluso más mensajes de otro tipo). Es conocido por el fabricante que para este tipo de alerta se utilizan dos variables, la primera que la identifica como sobrecalentamiento y la segunda con el valor de la temperatura; ambas son cadenas de texto.

Para definir la primera parte del trap solo se utiliza el OID principal para hacer el primer filtrado:

Trap alert definition 1.jpg

La segunda parte de la definición del trap es la que contiene la parte esencial. En la primera variable del trap colocamos la cadena Head alert

Trap alert definition 2.jpg

Por último en Field 1 use las variables macro que contienen el valor de las variables 1 y 2 del trap recibido ( _snmp_f1_ y _snmp_f2_ ) acompañado de un texto descriptivo:

Trap alert definition 3.jpg

De esta forma, cuando salte la alerta, el evento generado tendrá este aspecto:

Event result of alert.jpg

1.4 Trabajando en entornos con muchos traps

1.4.1 Protección ante tormenta de traps

Existen varios parámetros en el servidor que se utilizan para proteger al sistema ante la llegada de una tormenta de traps del mismo origen. Para ello se utilizan los siguientes parámetros de configuración en el fichero pandora_server.conf:

  • snmp_storm_protection: Máximo número de traps procesados en el intervalo de protección.
  • snmp_storm_timeout: Intervalo en segundos de protección ante tormenta de traps. Durante ese intervalo solo pueden procesarse X traps de la misma fuente (misma dirección IP).
  • snmp_storm_silence_period: Si es mayor que 0 cada vez que salte el storm protection para una fuente concreta, se sumará el tiempo actual más el tiempo de silenciado. Hasta que no pase este tiempo no se registrarán nuevos traps para la fuente concreta.

Cuando esta protección salta, queda reflejada en un evento en la consola:

Storm silence snmp.png

La protección ante tormenta de traps, combinada con el filtrado de traps (ver a continuación) permite que si recibe cientos de miles de traps al día, se trabaje con unos pocos miles, a fin de eliminar los redundantes o aquellos que son inútiles.

1.4.2 Filtrado de traps en el servidor

Algunos sistemas reciben un número elevado de traps de los cuales sólo interesa monitorizar un pequeño porcentaje. Con Pandora FMS es posible filtrar los traps que recibe el servidor para evitar cargar la aplicación de manera innecesaria. Desde Monitoring > SNMP > SNMP Filters puede definir distintos filtros.

Monitoring-snmp-snmp filters.png

Agregue una descripción y tantos filtros necesite con el botón +:

Snmp filter editor new.png

Un trap que coincida con cualquiera de ellos será automáticamente descartado por el servidor. El filtro se aplica como una expresión regular sobre la entrada correspondiente al trap en el log de SNMP (por defecto /var/log/pandora/pandora_snmptrap.log), que tiene el siguiente formato fijo:

%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%a[**]%N[**]%w[**]%W[**]%q[**]%v\n

Siendo:

  • %y: Año actual.
  • %m: Mes actual (numérico).
  • %l: Día del mes actual.
  • %h: Hora actual.
  • %j: Minuto actual.
  • %k: Segundo actual.
  • %a: Dirección de origen (sólo traps versión 1).
  • %N: OID.
  • %w: Tipo de trap (numérico).
  • %W: Descripción del trap.
  • %q: Sub-tipo del trap (numérico).
  • %v: Lista de variables separadas por tab (custom OID).

Por ejemplo, para filtrar todos los traps enviados por el host 192.168.50.20 podríamos definir el siguiente filtro:

Snmp filter example.png

Al poderse crear más de un filtro de manera simultanea, la búsqueda tendrá en cuenta aquellos traps que cumplan todas las condiciones del filtrado.

1.4.3 Estadísticas de traps SNMP

Esta vista permite ver estadísticas de traps, tanto por origen (dirección IP) como por OID, esto permite una gestión eficaz de los filtros, al permitir identificar las direcciones IP que más traps generan y los OID que más se repiten. El sistema muestra estadísticas de los traps de los últimos 30 días.

Captura de pantalla 2014-09-23 a la(s) 17.59.56.png
Captura de pantalla 2014-09-23 a la(s) 19.11.40.png

1.5 Personalizar Traps SNMP

Info.png

Versión Enterprise.
Las siguientes características son de la versión Enterprise únicamente.

 


Con el fin de facilitar la comprensión por parte del operador de los traps enviados por los dispositivos monitorizados, es posible subir las MIB del fabricante a Pandora FMS o bien editar los traps de forma personalizada.

1.5.1 Renombrado y personalización de traps

"Editar un trap" es el proceso para "personalizar" el aspecto que tiene un trap en la consola. Para editar un trap, vaya a Monitoring > SNMP > SNMP trap editor.

Monitoring-snmp-snmp trap editor.png

Haga clic en el icono de edición del trap que desea personalizar:

Traps5.JPG

Aparecerá una página similar a la siguiente:

Traps7.JPG

De esta forma, al encontrar traps con el OID .1.3.6.1.4.1.2789.2005 se mostrarán como "Blue box sample" y será más fácil diferenciarlos. Su contenido (incluido el OID original) no variará.

Custom OID es una expresión regular compatible con Perl que se comparará con la parte de la cadena del trap que contiene los variable bindings. No suele ser necesario para traducir un trap.

Template warning.png

"Custom OID" no está pensado para contener la cadena de variable bindings completa, que puede ser más larga que la máxima longitud que soporta, sino una expresión regular que encaja con una o más variables.

 


Tenga en cuenta que todos los traps anteriores no cambiarán su aspecto, esto entrará en funcionamiento con los nuevos traps que entren en el sistema a partir de este momento.

Un ejemplo de trap redefinido por el usuario:

Traps8.JPG

1.5.2 Subir las MIB del fabricante

Esta opción sirve para subir MIBS y ampliar la base de datos interna de traducción de Pandora FMS, de forma que cuando llegue un trap, sea automáticamente traducido por su descripción. Vaya a Monitoring > SNMP > MIB uploader.

Monitoring-snmp-snmp-mib uploader.png

Para subir las MIB de un fabricante haga clic en el icono de Upload file(s), elija el archivo y haga clic en el botón Go.

Cima6.png

Una vez que se ha subido el sistema lo incorpora a su librería de traps.

1.6 Alertas con traps SNMP complejos

Las alertas descritas anteriormente son para ocasiones donde el trap está bien definido, es siempre el mismo, y no tiene una información relevante que se deba rescatar.

En otras ocasiones puede llegar un trap que tiene la siguiente fisionomía:

OID: .1.3.6.1.4.1.2789.2005
Value: 666
Custom data: 1.3.6.1.4.1.2789.2005.1 = STRING: "ID-00342"	
.1.3.6.1.4.1.2789.2005.2 = STRING: "Automated check" .1.3.6.1.4.1.2789.2005.3 = STRING: "NIC Offline"
.1.3.6.1.4.1.2789.2005.4 = STRING: "4897584AH/345"

Este trap, además de un OID y un valor, contiene una información compleja, basada en varios OID y varios valores. Un trap puede tener, en su parte compleja una estructura completamente libre, basada en pares de OID y valores (contadores, numéricos, alfanuméricos, fechas, etcétera).

Este trap se visualizaría en la consola de traps de la siguiente manera:

Haga clic para ampliar

Si observa en detalle en la información extendida (Variable bindings) existen varios trozos de información útil. Concretamente, el primer campo, con el OID que termina en 2005.1 parece un identificador, el tercer campo con OID que termina en 2005.3 parece un mensaje de error. Los campos 2 y 4 no parecen de mucha utilidad, ya que el 4º por ejemplo, es un código que desconocemos.

Se crear un evento a partir de un trap colocando partes específicas del trap en el texto; por ejemplo, se debe construir un evento que contenga la siguiente información:

Chassis Alert: <mensaje de error> en dispositivo <identificador>

El trabajo consiste en crear una alerta que busque coincidencias en esos campos, obtenga el trozo de información y lo use posteriormente para componer una mensaje en una alerta.

Esto puede ser realizado con Pandora FMS usando expresiones regulares avanzadas y selectores. Puede encontrar más información sobre expresiones regulares en este enlace.

Los selectores, que usan los caracteres ( y ) permiten "copiar" información, usando una expresión de búsqueda.

La expresión regular para obtener el identificador sería la siguiente:

.*.1.3.6.1.4.1.2789.2005.1 \= STRING\: \"([0-9\-\_A-Za-z]+)\"

La expresión regular para obtener el mensaje de error sería la siguiente:

.*.1.3.6.1.4.1.2789.2005.3 \= STRING\: \"([\sA-Za-z]+)\".*

Una vez que tiene los campos de información, deben ser usados en la alerta. Para ello se usan las macros especiales _snmp_f1_, _snmp_f2_, ... _snmp_fn_, los cuales tienen sentido en las alertas de traps SNMP.

Para construir el mensaje, utilizaría la siguiente cadena:

Chassis Alert: _snmp_f2_ en dispositivo _snmp_f1_

En resumen, así se crearía la alerta completa:

Compex trap def1.png

Para hacer este tipo de alertas, es necesario tener buenos conocimientos de Expresiones Regulares, ya que un simple espacio, una comilla o un carácter en el sitio equivocado puede hacer que no funcione.

Info.png

Recuerde siempre que las alertas SNMP llevan implícito el uso de expresiones regulares.

 


La forma de establecer una alerta más sencilla, usando expresiones regulares, sería la siguiente:

Compex trap def4.png

1.6.1 Ejemplo adicional

Esto otro ejemplo, utiliza una alerta de tipo eMail para enviar información sobre el nombre de la interfaz cada vez que se recibe un trap específico que notifica problemas en dicha interfaz. De forma que al correo electrónico llega la información del dispositivo y la interfaz, obteniendo esa información del interior del trap.

Este es el trap recibido del switch:

Haga clic para ampliar

De esta manera se necesita el mensaje de correo:

Trap email.png

El trap debe ser definido en Pandora FMS de la siguiente manera:

Another snmp trap sample.png
Another snmp trap sample2.png

1.7 Asociar un trap al resto de alertas de Pandora / SNMP Agent trap forwarding

Las alertas definidas sobre traps son completamente independientes del motor de alertas de Pandora FMS, por lo que no se pueden establecer correlaciones del tipo “salta una alarma si la temperatura sube a 29 grados y salta el trap de caída de fuente secundaria de alimentación”. Tampoco se pueden representar alertas de este tipo (ya que no están -en principio- asociadas a ningún modulo de Pandora FMS) con lo que no se puede relacionar la monitorización de la consola de traps con elementos tales como informes o mapas.


Modulo especial SNMPTrap, conteniendo el trap reenviado desde la consola SNMP:

Snmptrap agent.png

Para poder hace esto, existe en Pandora FMS un método llamado Agent SNMP Trap Forwarding. Esta opción (general al servidor) reenvía el trap a un Módulo especial del Agente llamado SNMPTrap como cadena de texto, si y solo si, la dirección IP origen del trap está definida como IP de un agente. Cuando esto ocurre, el trap llega como una línea de texto al Agente dentro de ese Módulo, que es un Módulo que se define solo cuando llega el primer trap.

Sobre ese Módulo se pueden especificar alertas de texto, siendo estas completamente estándar, como las de cualquier módulo. Esto permite personalizar la monitorización SNMP para que ciertos traps, de ciertos orígenes puedan ser tratados como un módulo más, y así integrarlo en el resto de la monitorización, incluyendo la correlación de alertas.

Aspecto que tiene el modulo "SNMPTrap":

Snmptrapforward2.png

Esta es una característica Enterprise y se configura en Setup > Setup > Enterprise con la siguiente opción:

Opción de configuración para habilitar el reenvío de traps a los agentes:

Snmptrap agent forwardsetup.png

Si se cambia esta opción, hay que reiniciar el servicio del servidor de Pandora FMS para que empiece a actuar.

Otra solución es montar una alerta sobre el trap que active un módulo de un agente. Por ejemplo, el trap consiste escribir en un fichero de logs, y se tiene un agente que lee ese fichero y salte cuando hay un "1" escrito. De esta forma, el módulo saltará cuando se reciba el trap deseado y se podrá establecer la correlación en base al trap recibido.

1.8 Gestor de TRAPS externo

La consola de SNMP está limitada a recibir traps, ya que solo procesa TRAP como ente individual, pero un trap puede contener mucha información. A veces ocurre que la única monitorización que se puede hacer está basada en traps. Para ello se puede optar por "postprocesar" la información recogida en un trap a través de un script externo, que actúa a modo de plugin.

Para procesar los datos de un trap con detalle, se puede enviar toda la información de un trap a un script, como resultado de una alerta. Este ejemplo es tal y como se vería en el log de la consola de SNMP de Pandora FMS:


2010-08-26 12:01:46 pandora 10.201.246.2 .1.3.6.1.4.1.1722 .1.3.6.1.4.1.1722.2.10.1.1.1 233 .1.3.6.1.4.1.1722.2.10.1.1.3 = STRING: 
AIX_Software_Failure .1.3.6.1.4.1.1722.2.10.1.1.2 = STRING: 08 25 2010 08:23:43:697685 .1.3.6.1.4.1.1722.2.10.1.1.8 = STRING: 1: A 
software error PERM with label CORE_DUMP, identifier C69F5C9B occurred at Wed Aug 2 5 10:22:28 DFT 2010 on dvs02 for resource 
SYSPROC. Cause is SOFTWARE PROGRAM ABNORMALLY TERMINATED. .1.3.6.1.4.1.1722.2.10.1.1.6 = STRING: 8 
.1.3.6.1.4.1.1722.2.10.1.1.11 = STRING: An application may not work properly .1.3.6.1.4.1.1722.2.10.1.1.10 = STRING: An application 
may not work properly .1.3.6.1.4.1.1722.2.10.1.1.12 = INTEGER: 4 .1.3.6.1.6.3.1.1.4.3.0 = OID: .1.3.6.1.4.1.1722
SNMP2.JPG
SNMP3.JPG

En las capturas se puede ver cómo se crearía una alerta especial, que ejecuta un script con los contenidos completos del trap ( _data_ ) y cómo se crea la alerta de tipo SNMP. En este caso se ha mapeado para la OID Especifica (.1.3.6.1.4.1.1722.2.10.1.1.1) pero podría haber sido mas genérica, por ejemplo (.1.3.6.1.4.1.1722) para invocar al script ante cualquier tipo de traps de esta tipología.

Se ejecuta un script que procesa esos datos y "analiza" el trap para escribir datos en Pandora FMS directamente, generando un XML y dejándolo en /var/spool/pandora/data_in a modo de datos como si vinieran de un agente. Un script básico para este caso podría, por ejemplo, generar información compleja ya que se tiene bastante información en este trap, a saber:

  • IP Origen.
  • Evento principal (Cold start)
  • Eventos secundarios (descriptivos): AIX_Software_Failure, 1: A software error PERM with label CORE_DUMP, identifier C69F5C9B occurred at Wed Aug 2 5 10:22:28 DFT 2010 on dvs02 for resource SYSPROC. Cause is SOFTWARE PROGRAM ABNORMALLY TERMINATED, An application may not work properly, An application may not work properly.

Al diseñar un script que "parsee" cada uno de esos datos, por ejemplo "miscript.pl" y que guarde en /var/spool/pandora/data_in el XML con un nombre genérico más un número aleatorio como, por ejemplo: snmp_gateway.31415.data

El XML generado debería tener el siguiente aspecto.

<?xml version='1.0' encoding='ISO-8859-1'?>
<agent_data description='' group='' os_name='aix' os_version='' interval='300' version='3.1(Build 100608)' timestamp='2010/08/26 12:20:26' agent_name='10.201.246.2'>
  <module>
    <name><![CDATA[Critical_Event]]></name>
    <description><![CDATA[]]></description>
    <type>async_proc</type>
    <data><![CDATA[1]]></data>
  </module>
<module>
    <name><![CDATA[events]]></name>
    <description><![CDATA[]]></description>
    <type>async_string</type>
    <datalist>
      <data><value><![CDATA[AIX_Software_Failure]]></value></data>
      <data><value><![CDATA[A software error PERM with label CORE_DUMP, identifier C69F5C9B occurred at Wed Aug 2 5 10:22:28 DFT 2010 on dvs02 for resource SYSPROC.]]></value></data>
      <data><value><![CDATA[Cause is SOFTWARE PROGRAM ABNORMALLY TERMINATED, An application may not work properly, An application may not work properly.]]></value></data>
    </datalist>
  </module>
</agent_data>

La aplicación de esta tecnología es sumamente amplia por ello cada script debe ser particularizado ya que puede tener una estructura muy dinámica. En muchos sistemas la información que se recibe, no solo es de texto, si no también numérica, con lo que puede alimentar a módulos de información numéricos y así representar gráficas etc. Siempre habrá que tener en cuenta que los datos generados en el XML deberían ser siempre de tipo asíncrono.

1.8.1 Ejemplo práctico: Monitorización ESX utilizando traps

Una de los asuntos más problemáticos de monitorizar es la infraestructura "distribuida", más si cada versión cambia su implementación para reunir información, como VmWare ESX. Este pequeño capítulo intenta explicar cómo monitorizar los sistemas ESX utilizando un gestor externo de Traps SNMP.

Los traps ESX son como estos:

.1.3.6.1.4.1.6876.4.3.301 = STRING: "host"  .1.3.6.1.4.1.6876.4.3.302 = STRING: "c7000-06-01.tsm.inet"      .1.3.6.1.4.1.6876.4.3.303 = ""  
.1.3.6.1.4.1.6876.4.3.304 = STRING: "Green" .1.3.6.1.4.1.6876.4.3.305 = STRING: "Yellow"    .1.3.6.1.4.1.6876.4.3.306 = STRING: "Host 
cpu usage - Metric Usage = 1%"
.1.3.6.1.4.1.6876.4.3.301 = STRING: "host"  .1.3.6.1.4.1.6876.4.3.302 = STRING: "dl360-00.tsm.inet" .1.3.6.1.4.1.6876.4.3.303 = ""  
.1.3.6.1.4.1.6876.4.3.304 = STRING: "Yellow".1.3.6.1.4.1.6876.4.3.305 = STRING: "Green"     .1.3.6.1.4.1.6876.4.3.306 = STRING: "Host 
memory usage - Metric Usage = 84%"
.1.3.6.1.4.1.6876.4.3.301 = STRING: "host"  .1.3.6.1.4.1.6876.4.3.302 = ""  .1.3.6.1.4.1.6876.4.3.303 = ""  .1.3.6.1.4.1.6876.4.3.304 = 
STRING: "Red"       .1.3.6.1.4.1.6876.4.3.305 = STRING: "Green" .1.3.6.1.4.1.6876.4.3.306 = STRING: "Datastore usage on disk - Metric 
Storage space actually used = 55%"

Tal como se observa, los traps son utilizados para recolectar información del CPU, el Disco, o la Memoria. La idea general detrás del gestor de traps es escribir un pequeño script que sea capaz de "entender" el trap y crear un XML simulando ser un Agente Software. De este modo, para cada tecnología debería escribir un gestor de trap, pero todo el proceso es común. El proceso para entender esto está explicado en cuatro pasos:

  1. Crear el handler script. Puede basar su trabajo en el script que se proporciona más abajo.
  2. Crear un comando de alerta.
  3. Crear una acción de alerta utilizando comandos anteriores. Algunas veces, con opciones personalizadas para cada agente "destinatario" que desee (si tiene varios grupos de ESX, de seguro optará por tener datos en diferentes agentes).
  4. Crear una alerta de Trap SNMP que mapee el OID Enterprise (la información del trap para todos los tipos de esta tecnología específica y/o la dirección IP del trap fuente.

1.8.1.1 Paso 1:Trap handler: esx_trap_manager.pl

#!/usr/bin/perl
# (c) Sancho Lerena 2010 <[email protected]>
# Specific Pandora FMS trap collector for ESX 

use POSIX qw(setsid strftime);

sub show_help {
	print "\nSpecific Pandora FMS trap collector for ESX\n";
	print "(c) Sancho Lerena 2010 <[email protected]>\n";
	print "Usage:\n\n";
	print "   esx_trap_manager.pl <destination_agent_name> <TRAP DATA>\n\n";
	exit;
}

sub writexml {
	my ($hostname, $xmlmessage ) = @_;
	my $file = "/var/spool/pandora/data_in/$hostname.".rand(1000).".data";

	open (FILE, ">> $file") or die "[FATAL] Cannot write to XML '$file'";
	print FILE $xmlmessage;
	close (FILE);
}

if ($#ARGV == -1){
	show_help();
}

$chunk = "";

# First parameter is always destination host for virtual server
$target_host = $ARGV[0];

foreach $argnum (1 .. $#ARGV) {
	if ($chunk ne ""){
		$chunk .= " ";
	}
	$chunk .= $ARGV[$argnum];
}

my $hostname = "";
my $now = strftime ("%Y-%m-%d %H:%M:%S", localtime());
my $xmldata = "<agent_data agent_name='$target_host' timestamp='$now' version='1.0' os='Other' os_version='ESX_Collectordime ' interval='9999999999'>";

if ($chunk =~ m/.1.3.6.1.4.1.6876.4.3.302 \= STRING\: ([A-Za-z0-9\-\.]*)\s\.1/){
	$hostname = "_".$1;
}

if ($chunk =~ m/Host cpu usage \- Metric Usage \= ([0-9]*)\z/){
	$value = $1;
	$module_name = "CPU_OCUPADA$hostname";
}

if ($chunk =~ m/Host memory usage \- Metric Usage = ([0-9\.]*)\z/){
	$value = $1;
	$module_name = "MEMORIA_OCUPADA$hostname";
}

if ($chunk =~ m/Datastore usage on disk \- Metric Storage space actually used \= ([0-9\.]*)\z/){
	$value = $1;
	$module_name = "DISCO_OCUPADO$hostname";
}

$xmldata .= "<module><name>$module_name</name><type>async_data</type><data>$value</data></module>\n";

$xmldata .= "</agent_data>\n";
writexml ($target_host, $xmldata);


1.8.1.2 Paso 2: Crear el comando de alerta

En este ejemplo, se ha puesto el script del comando en /tmp, cambie a una ubicación adecuada y asegúrese de que se pueda ejecutar (chmod 755):

SNMP3.JPG

1.8.1.3 Paso 3: Crear la acción de la alerta

Crea una acción específica para enviar toda la información a traps de agentes específicos. En este caso, la información será enviada a un agente llamado WINN1247VSR. El comando de arriba acepta como parámetros el nombre del agente que llevará toda la información (ESX Virtual Center), y "trozos" de datos del TRAP, que puede ser ilimitado e incluye toda la información que se envía al trap.

SNMP4.JPG

1.8.1.4 Paso 4: Crear la alerta SNMP

Configure los traps de alerta utilizando la acción que acaba de crear, para procesar todos los traps de Tecnología ESX, que este encontrará, utilizando el OID específico .1.3.6.1.4.1.6876.4.3.301 para mapear los traps ESX.

SNMP5.JPG

También puede filtrar por fuente de IP para cada Centro Virtual, mediante el filtrado por dirección IP de origen (enviado en el Trap).

1.8.1.5 Visualización de Datos

Esto es un ejemplo de cómo se verá la información. Con estos datos, podrá gestionarla como módulos estándar.

Haga clic para ampliar
SNMP7.JPG

1.9 SNMP trap forwarding

Con Pandora FMS es posible habilitar el reenvío de traps SNMP a un host externo habilitando el snmp_forward_trap en el token en el fichero de configuración de Pandora.


1.9.1 Ejemplo de configuración para reenvío de traps usando SNMP v1

snmp_forward_trap 1
snmp_forward_ip 192.168.1.145
snmp_forward_version 1
snmp_forward_secName
snmp_forward_engineid
snmp_forward_authProtocol
snmp_forward_authPassword
snmp_forward_privProtocol
snmp_forward_privPassword
snmp_forward_secLevel

1.9.2 Ejemplo de configuración para reenvío de traps usando SNMP v2c

snmp_forward_trap 1
snmp_forward_ip 192.168.1.145
snmp_forward_version 2c
snmp_forward_secName
snmp_forward_engineid
snmp_forward_authProtocol
snmp_forward_authPassword
snmp_forward_privProtocol
snmp_forward_privPassword
snmp_forward_secLevel

1.9.3 Ejemplo de configuración para reenvío de traps usando SNMP v3

Este ejemplo es particularmente complicado debido al conocimiento requerido en SNMP v3. Vamos a suponer que el agente SNMP remoto definido en snmp_forward_ip tiene la siguiente entrada en su fichero de configuración /etc/snmp/snmptrapd.conf:

createUser -e 0x0102030405 myuser MD5 mypassword DES myotherpassword

La configuración en el fichero de configuración de Pandora FMS sería entonces:

snmp_forward_trap 1
snmp_forward_ip 192.168.1.145
snmp_forward_version 3
snmp_forward_secName myuser
snmp_forward_engineid 0x0102030405
snmp_forward_authProtocol MD5
snmp_forward_authPassword mypassword
snmp_forward_privProtocol DES
snmp_forward_privPassword myotherpassword
snmp_forward_secLevel authNoPriv

Para más información visite NET-SNMP v3 Traps



1.10 Gestión independiente del demonio snmptrapd

Es posible que por alguna razón prefiera gestionar el demonio snmptrapd de forma independiente a Pandora FMS (para detenerlo o iniciarlo de forma independiente al Daemon principal de Pandora FMS). Para ello, debe tener en cuenta varias cosas:

1. Debe activar igualmente el parámetro snmpconsole en el servidor de Pandora FMS.

2. Los logs configurados en el servidor de Pandora FMS deben ser los mismos que se generen en la llamada independiente a snmptrapd

3. La llamada a snmptrapd debe tener un formato específico ya que la llamada al demonio estándar del sistema es inválida. La llamada debe ser como esta (el parámetro -A es especialmente importante):

/usr/sbin/snmptrapd -A -t -On -n -a -Lf /var/log/pandora/pandora_snmptrap.log -p /var/run/pandora_snmptrapd.pid --format1=SNMPv1[**]%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%a[**]%N[**]%w[**]%W[**]%q[**]%v\n --format2=SNMPv2[**]%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%b[**]%v\n

4. Debe configurar en el fichero de configuración del servidor, el token:

snmp_trapd manual

5. Cuando establezca este funcionamiento debe realizar la siguiente operación:

  • Cambiar la configuración en /etc/pandora/pandora_server.conf.
  • Detener el servidor de Pandora FMS.
  • Verificar que el proceso snmptrapd ya no se ejecuta (y si es así, esperar a que "muera" o "matarlo").
  • Arrancar snmptrapd manualmente (con el formato indicado arriba).
  • Arrancar el servidor de Pandora FMS.

1.10.1 Gestión del fichero de log de traps

El proceso snmptrapd puede ser parado y arrancando sin necesidad de parar y arrancar el proceso de Pandora FMS server, siempre y cuando que los ficheros pandora_snmptrap.log.index y pandora_snmptrap.log no sean modificados. Si estos ficheros son modificados, es preciso reiniciar el servidor de Pandora FMS. Si necesita rotar de forma externa el log de traps, deberá reiniciar el servidor de Pandora FMS después de borrar los ficheros anteriormente mencionados.

1.11 Buffering de traps SNMP

Si los traps SNMP se envían a un manager externo a través de una conexión poco fiable se perderá parte de la información. Pandora FMS le permite, en vez de eso, reenviar los traps desde un snmptrapd local a su servidor de Pandora FMS de una forma fiable.

1.11.1 Arquitectura

Remote snmp trap schema.jpg
  • Un agente SNMP envía traps a un snmptrapd local.
  • Un agente de Pandora FMS local lee los traps del fichero de log de snmptrapd y los manda al servidor de Pandora FMS designado dentro de un fichero de datos XML, guardándolo en el buffer de XML y reintentándolo más tarde si fuese necesario.
  • El Data Server lee traps de ficheros de datos XML y los vuelca en un fichero de texto plano.
  • La consola SNMP procesa los traps desde el fichero de texto plano.

Template warning.png

Es más eficiente que la consola SNMP procese directamente los traps desde el fichero de log de snmptrapd. Esta configuración se recomienda sólo si la fiabilidad o la conectividad directa son motivo de preocupación.

 


1.11.2 Prerequisitos

  • Un snmptrapd local que está recibiendo traps.
  • Un agente de Pandora FMS local.
  • Una instalación de Pandora FMS.

1.11.3 Configuración

1.11.3.1 snmptrapd

Edite el fichero /etc/snmp/snmptrapd.conf y asegúrese de que está guardando logs a un fichero en un formato compatible con Pandora FMS (puede cambiar el nombre del fichero de log si fuese necesario):

[snmp] logOption f /var/log/snmptrapd.log
format1 SNMPv1[**]%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%a[**]%N[**]%w[**]%W[**]%q[**]%v\n
format2 SNMPv2[**]%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%b[**]%v\n

1.11.3.2 Agente de Pandora FMS

Se utilizará el plugin grep_snmptrapd que viene con el Agente de Pandora FMS para leer datos del fichero de log de snmptrapd.

Edite el fichero de configuración del agente local, /etc/pandora/pandora_agent.conf, y añada la siguiente línea, ajustando la vía del fichero de log de snmptrad si fuese necesario:

module_plugin grep_snmptrapd /var/log/snmptrapd.log

1.11.3.3 Servidor de Pandora FMS

Debe indicarle a la Consola SNMP que procese traps de un fichero de log externo escrito por el Data Server.

Edite el fichero de configuración del servidor /etc/pandora/pandora_server.conf:

  • Asegúrese de que la Consola SNMP está habilitada:
snmpconsole 1
  • Asegúrese de que el Data Server está habilitado:
dataserver 1
  • Configure un fichero de log SNMP externo. Si no existe, la Consola SNMP lo creará:
snmp_extlog /var/log/pandora/pandora_snmptrap.ext.log

Template warning.png

snmp_extlog puede ser cualquier fichero en el que el servidor de Pandora FMS pueda escribir, pero tiene que ser distinto de snmp_logfile (también definido en /etc/pandora/pandora_agent.conf).

 


1.12 Generador de Traps

Esta herramienta permite generar traps personalizados que posteriormente puede observar en la consola SNMP.

Generador de traps.png

Para poder configurar correctamente el generador de traps debe rellenar los siguientes campos:

Host Address
Dirección IP destino a la que va a enviar el trap.
Community
Contraseña de la comunidad SNMP a la que intenta acceder con el generador de traps.
Enterprise String
Configure el OID (Object Identifier) del trap. Por ejemplo: 1.3.6.1.2.1.2.2.1.8.
Value
El valor que desee dar al trap y que luego aparecerá como Data.
SNMP Agent
Introduzca el agente donde vamos a simular el trap, obligatoriamente coloque la dirección IP del mismo.
SNMP Type
Escoja un tipo de SNMP entre las siguientes opciones:
    • Cold Start: Indica que el agente se ha iniciado o reiniciado.
    • Warm Start: Indica que la configuración del agente ha sido modificada.
    • Link down: Indica que la interfaz de comunicación está fuera de servicio (inactiva).
    • Link up: Indica que una interfaz de comunicación se ha activado.
    • Authentication failure: Indica que el agente recibió una solicitud de un NMS no autorizado (controlado por la comunidad).
    • EGP neighbor loss: Indica que en los sistemas donde los enrutadores que usan el protocolo EGP, un host cercano está fuera de servicio.
    • Enterprise: En esta categoría se encuentran todos los traps nuevos, incluidas los traps de proveedores.

Volver al Índice de Documentación Pandora FMS