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

From Pandora FMS Wiki
Jump to: navigation, search
(Alertas con traps SNMP complejos)
(Gestor de TRAPS externo: Con información actualizada vía Mattermost.)
 
(169 intermediate revisions by 19 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]]
 +
 
  
 
= Operación con traps SNMP =
 
= Operación con traps SNMP =
Line 5: Line 6:
 
== Introducción ==
 
== Introducción ==
  
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 se inicia. Este servidor, generalmente almacena los traps en un log en ''/var/log/pandora/pandora_snmpconsole.log''.
+
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.  
  
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: Se 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.
+
[[Image:Trap-example.png|center|600px]]
  
== Acceso a la consola de recepción de traps ==
+
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 [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 <code>/etc/pandora/pandora_server.conf</code> para activar la Consola SNMP:
 +
 
 +
snmpconsole 1
  
Para acceder a la consola de recepción de traps se va a Operación > Consola SNMP donde aparece la lista de traps que se han recibido. Existe un icono (el ojo) que permite desplegar toda la información del trap, igual que ocurre con los eventos. Aqui podemos ver la información detallada de un trap SNMP.
+
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):
<br><br>
 
<center>
 
[[image:snmp_trap_sample.png|850px|center]]
 
</center>
 
<br>
 
Para cada trap aparecen las siguientes columnas:
 
  
'''Status'''
+
translate_variable_bindings 1
 +
translate_enterprise_strings 1
  
Cuadrado verde si el trap se ha validado y rojo si no se ha validado.
+
También debe configurar el archivo <code>/etc/snmp/snmptrapd.conf</code> con los parámetros necesarios, por ejemplo:
  
'''SNMP Agent'''
+
authCommunity log public
 +
disableAuthorization yes
  
Agente que ha enviado el trap.
+
Con esta configuración, los traps se crearán para la comunidad '''public''' y no requerirán autorización.
  
'''OID'''
+
=== SNMPv3 ===
  
OID del trap enviado. Un trap solo puede enviar un dato en este campo.
+
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:
  
'''Value'''
+
disableAuthorization yes
 +
createUser -e 0x0102030405 snmpv3user SHA mypassword AES
  
Campo value del trap enviado. Un trap solo puede enviar un dato en este campo.
+
{{Warning|Se debe especificar el engineID con la opción <code>-e</code>. De lo contrario, sólo se recibirán INFORMs SNMPv3.}}
  
'''Custom OID, Custom Value'''
+
== Acceso a la consola de recepción de traps ==
  
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.
+
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.
  
'''Time Stamp'''
+
[[Image:Traps.JPG|center|800px]]
  
Tiempo que ha pasado desde que se ha recibido el trap.
+
Para cada trap aparecen las siguientes columnas:
  
'''Alerta'''
+
;Status: Cuadrado verde si el trap se ha validado y rojo si no se ha validado.
  
Cuadrado amarillo si se ha lanzado alguna alerta con este trap o cuadrado gris, si no se ha lanzado ninguna alerta.
+
;SNMP Agent: Agente que ha enviado el trap.
  
'''Acción'''
+
;Enterprise string: OID o ''Object Identifier''' (Identificador de Objeto) del trap enviado. Un trap solo puede enviar un dato en este campo.
 
Campo para borrar o validar el trap.
 
  
Además los traps tiene un color (visto como color de fondo de la línea del trap) diferente según el tipo de trap.
+
;Time Stamp: Tiempo que ha transcurrido desde que se ha recibido el trap.
  
*Azul: los traps de tipo mantenimiento.
+
;Alerta: Cuadrado amarillo si se ha lanzado alguna alerta con este trap o cuadrado gris, si no se ha lanzado ninguna alerta.
*Morado: los traps de  tipo información.
 
*Verde: los traps de tipo Normal.
 
*Amarillo: los traps de tipo Warning.
 
*Rojo:  los traps de tipo Crítico.
 
  
===Filtrar traps ===
+
;Acción: Acción con botones para validar o borrar el trap.
  
En la parte superior de la consola de traps aparece la opción “Toogle Filter”. Pulsando sobre dicha opción aparecen o desaparecen los campos para filtrar traps.
+
'''Colores'''
<br><br>
 
<center>
 
[[image:alert.png|850px|center]]
 
</center>
 
<br>
 
Es posible filtrar en la consola de traps por los siguientes campos:
 
  
*'''Agent''': combo donde aparecen los agentes de Pandora.
+
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.
*'''OID''': combo donde aparecen las OIDs recibidas.
 
*'''Alert''': combo donde se elige por alertas lanzadas o no lanzadas.
 
*'''Search value''': combo donde se puede buscar por valor del Trap.
 
*'''Severity''': combo donde aparecen los diferentes tipos de trap: Maintenance, Information, Severity, Warning, Normal y Critical.
 
*'''Status''': Selecciona entre alertas SNMP validadas, no validadas o todas.
 
*'''Free search''': busca por cualquier campo alfanumérico del trap.
 
*'''Type''': filtra las alertas SNMP por tipo. Pudiendo ser: Cold start, Warm start, Link down, Link up, Authentication failure o Other.
 
  
Además de estos campos de búsqueda, está la opción “Block size of pagination”, que permite definir el número de traps que habrá en cada página.
+
*'''Azul''': los traps de tipo mantenimiento.
 +
*'''Morado''': los traps de tipo información.
 +
*'''Verde''': los traps de tipo <code>normal</code>.
 +
*'''Amarillo''': los traps de tipo <code>warning</code>.
 +
*'''Rojo''':  los traps de tipo <code>critical</code>.
 +
 
 +
Al hacer clic en '''Toggle Filter''' aparecen o desaparecen los campos para filtrar traps.
 +
 
 +
[[Image:alert.png|center|700px]]
  
 
===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 haga clic sobre el círculo a la izquierda del trap.
 +
 
 +
[[Image:Traps2.JPG|center|760px]]
 +
 
 +
También es posible validar múltiples traps marcándolos y pulsando el botón '''Validate'''.
  
Para validar un trap se pulsa sobre el círculo verde que hay a la izquierda del trap.
 
<br><br>
 
<center>
 
[[image:trap1.png|center]]
 
</center>
 
<br>
 
También es posible validar múltiples traps marcándolos y pinchando en el botón de “validate”.
 
<br><br>
 
<center>
 
[[image:trap2.png|center]]
 
</center>
 
<br>
 
 
===Borrar traps ===
 
===Borrar traps ===
  
Es posible borrar traps una vez que los mismos se han tratado.  
+
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]]
  
Para borrar un trap se pulsa sobre la cruz roja que hay a la izquierda del trap.
+
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.
<br><br>
 
<center>
 
[[image:borrar1.png|center]]
 
</center>
 
<br>
 
  
 
== Alertas de Traps SNMP==
 
== Alertas de Traps SNMP==
 +
=== 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 [http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_es:Alertas en este enlace].
 +
 +
=== 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:
 +
 +
[[Image:alertSNMP1.png|center|500px]]
 +
 +
 +
;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).
 +
 +
;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.
 +
 +
[[Image:Trap type.png|center|360px]]
 +
 +
;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 <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]]
 +
 +
;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 <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 <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.
 +
 +
;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'''.
  
Es posible asociar una alerta a un trap para que Pandora FMS nos avise si llega un trap especifico. Esto está en el menu de SNMP -> Alertas SNMP. Los traps de SNMP no tienen nada que ver con el resto de alertas del sistema, aunque reutilizarán el sistema de acciones. Tenga en cuenta que al no existir "plantilla de alertas" aqui, las condiciones y los campos pasados como parámetro al comando funciona diferente a como funciona una alerta normal. Los campos de datos de la alerta sobre escriben a los campos de la acción y no existen alertas de recuperación (no se puede recuperar un trap), ya que en caso de que se reciba otro trap para advertir de que algo deja de estar mal, hay que tratarlo como un trap diferente.
+
;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.
  
===Añadir una alerta===
+
;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á.
  
Las alertas de traps SNMP tienen varios campos que pueden ser utilizados para "buscar" datos en el trap SNMP. Los campos que se pueden usar, tanto por separado como por combinación son:
+
;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.
  
*'''Description''': Combo para escribir una descripción de la alerta.
+
=== Macros de fields en las alertas ===
  
*'''OID''': OID principal del Trap. Es una expresión regular. Si no se usa una expresion regular se buscará la cadena exacta, si se quiere buscar un trozo del OID, se debe usar una expresion regular, de forma que si queremos buscar, por ejemplo: 1.21.34.2.3 en un OID más largo, podemos usar la expresión regular .*1.21.34.2.3.*
+
Se pueden utilizar las siguientes macros en cualquiera de los campos ''field'' de las alertas:
  
*'''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. Aqui funciona, igualmente, la búsqueda por expresión regular. Por ejemplo si tengo un trap que envia la cadena "Testing TRAP 225" yo puedo buscar cualquier trap con la subcadena "Testing TRAP" con la expresion regular "Testing.*TRAP.*"
+
* <code>_data_</code>: Trap entero
 +
* <code>_agent_</code>: Nombre del Agente
 +
* <code>_address_</code>: Dirección IP
 +
* <code>_timestamp_</code>: Fecha trap
 +
* <code>_snmp_oid_</code>: OID del trap
 +
* <code>_snmp_value_</code>: Valor del OID del trap
  
*'''SNMP Agent''': IP del agente que envía el trap. De igual forma, podemos usar una expresión regular o una subcadena.
+
===Ejemplo de alerta de traps ===
  
*'''Trap type''': Filtra por tipo de trap pudiendo ser: Cold start, Warm start, Link down, Link up, Authentication failure o Other. La mayoria de los traps generados suelen ser de tipo "Other"; si no espefica nada, buscará cualquier tipo de trap.
+
[[Image:trap_sample_for_alert.jpg|center|650px]]
  
*'''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.
+
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.
  
*'''Custom OID/Data #1''': Es una expresión regular. Se deben usar selectores para seleccionar la parte de la expresión regular que se cargará en la macro _snmp_f1_ que luego se podrá utilizar en los campos Field #1 (Alias, name), Field #2 (Single Line) y Field #3 (Full Text).
+
Para definir la primera parte del trap solo se utiliza el OID principal para hacer el primer filtrado:
  
*'''Custom OID/Data #2''': Es una expresión regular. Se deben usar selectores para seleccionar la parte de la expresión regular que se cargará en la macro _snmp_f2_ que luego se podrá utilizar en los campos Field #1 (Alias, name), Field #2 (Single Line) y Field #3 (Full Text).
+
[[Image:trap_alert_definition_1.jpg|center|650px]]
  
*'''Custom OID/Data #3''': Es una expresión regular. Se deben usar selectores para seleccionar la parte de la expresión regular que se cargará en la macro _snmp_f3_ que luego se podrá utilizar en los campos Field #1 (Alias, name), Field #2 (Single Line) y Field #3 (Full Text).
+
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>
  
*'''Custom OID/Data #4''': Es una expresión regular. Se deben usar selectores para seleccionar la parte de la expresión regular que se cargará en la macro _snmp_f4_ que luego se podrá utilizar en los campos Field #1 (Alias, name), Field #2 (Single Line) y Field #3 (Full Text).
+
[[Image:trap_alert_definition_2.jpg|center|650px]]
  
*'''Custom OID/Data #5''': Es una expresión regular. Se deben usar selectores para seleccionar la parte de la expresión regular que se cargará en la macro _snmp_f5_ que luego se podrá utilizar en los campos Field #1 (Alias, name), Field #2 (Single Line) y Field #3 (Full Text).
+
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:
  
*'''Custom OID/Data #6''': Es una expresión regular. Se deben usar selectores para seleccionar la parte de la expresión regular que se cargará en la macro _snmp_f6_ que luego se podrá utilizar en los campos Field #1 (Alias, name), Field #2 (Single Line) y Field #3 (Full Text).
+
[[Image:trap_alert_definition_3.jpg|center|650px]]
  
*'''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 accion de email (si queremos sobreescribir el mail que tenga por defecto en la accion).
+
De esta forma, cuando salte la alerta, el evento generado tendrá este aspecto:
  
*'''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.
+
[[Image:event_result_of_alert.jpg|center|700px]]
  
*'''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.
+
== Trabajando en entornos con muchos traps ==
  
*'''Min. Number of Alerts''': Campo donde se define el mínimo número de traps que tienen que llegar para que salte la alarma.
+
=== Protección ante tormenta de traps ===
  
*'''Max. Number of Alerts''': Campo donde se define el número máximo de veces que se ejecutará la acción.
+
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>:
  
*'''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.
+
* <code>snmp_storm_protection</code>: Máximo número de traps procesados en el intervalo de protección.
 +
* <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).
 +
* <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.
  
*'''Priority''': Combo donde se establece la prioridad de la alarma.
+
Cuando esta protección salta, queda reflejada en un evento en la consola:
  
*'''Alert Action''': Combo donde se elije la acción que va a ejecutar la alerta. Si se elije un evento, el evento normal de generación de alerta no se generará.
+
[[Image:Storm silence snmp.png|center|400px]]
  
<center><br><br>
+
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.
[[image:Snmp_trap_alert.png|750px|center]]
 
</center><br><br>
 
  
En este caso concreto, al definir la alerta usando un evento, y usando el campo uno para generar la información, resultaría un evento como el
+
=== Filtrado de traps en el servidor ===
siguiente:
 
  
<br><br><center>
+
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.  
[[File:Snmp trap alert event.png|850px|center]]
 
</center><br><br>
 
  
Una vez se han rellenado los campos se pincha en “Create”
+
[[Image:Monitoring-snmp-snmp_filters.png|center|600px]]
 +
 
 +
Agregue una descripción y tantos filtros necesite con el botón '''+''':
 +
 
 +
[[Image:Snmp_filter_editor_new.png|center|700px]]
 +
 
 +
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
 +
 
 +
Siendo:
 +
 
 +
* <code>%y</code>: Año actual.
 +
* <code>%m</code>: Mes actual (numérico).
 +
* <code>%l</code>: Día del mes actual.
 +
* <code>%h</code>: Hora actual.
 +
* <code>%j</code>: Minuto actual.
 +
* <code>%k</code>: Segundo actual.
 +
* <code>%a</code>: Dirección de origen (sólo traps versión 1).
 +
* <code>%N</code>: OID.
 +
* <code>%w</code>: Tipo de trap (numérico).
 +
* <code>%W</code>: Descripción del trap.
 +
* <code>%q</code>: Sub-tipo del trap (numérico).
 +
* <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:
 +
 
 +
[[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.
 +
 
 +
=== 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.
 +
 
 +
[[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)_19.11.40.png|center|750px]]
  
 
== 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 version Enterprise únicamente}}
+
{{Tip|[[Image:icono-modulo-enterprise.png|Versión Enterprise.]]<br>Las siguientes características son de la versión Enterprise únicamente.}}
  
=== Renombrar / Personalizar traps ===
+
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.
  
Llamamos "editar un trap" al proceso donde se permite "personalizar" el aspecto que tiene un trap en la consola.
+
=== Renombrado y personalización de traps ===
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. ¿Podríamos renombrarlos para que pusiera "Caja azul" en vez de un churro indescifrable?.
 
  
Para editar un trap, vaya a Operacion > Consola SNMP. Haga click en el campo OID del trap que se quiere editar.
+
"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'''.  
  
<center>
+
[[Image:Monitoring-snmp-snmp_trap_editor.png|center|600px]]
<br><br>
+
 
[[image:cima2.png|700px|center]]
+
Haga clic en el icono de edición del trap que desea personalizar:
<br><br>
+
 
</center>
+
[[Image:Traps5.JPG|center|800px]]
  
 
Aparecerá una página similar a la siguiente:
 
Aparecerá una página similar a la siguiente:
  
<center><br><br>
+
[[Image:Traps7.JPG|center|500px]]
[[image:cima3.png|500px|center]]
+
 
<br><br></center>
+
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.
  
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 para el ojo normal, diferenciarlos. Su contenido (incluida la OID original) no variará.
+
{{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.}}
  
 
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.
  
Desde el mismo sitio puede crear nuevos traps desde 0, con la opcion "crear trap". Para ello sólo hay que ir al editor de traps, como se puede ver en esta captura. En esa sección podemos alterar la definición de un trap, o borrarla.
+
Un ejemplo de trap redefinido por el usuario:
 
 
<center><br><br>
 
[[File:Snmp trap editor.png|780px|center]]
 
<br><br></center>
 
  
Finalmente, así es como se vería un trap redefinido por el usuario:
+
[[Image:Traps8.JPG|center|800px]]
  
<center><br><br>
+
=== Subir las MIB del fabricante===
[[Image:Snmp_custom_view.png|780px|center]]
 
<br><br></center>
 
  
===Subir las MIBs 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'''.
  
Esta opción sirve para subir MIBS de traps (exclusivamente) y ampliar la base de datos interna de traducción de Pandora, de forma que cuando llegue un trap, sea automáticamente traducido por su descripción.  
+
[[Image:Monitoring-snmp-snmp-mib_uploader.png|center|600px]]
  
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”.
+
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'''.
  
<center><br><br>
+
[[Image:cima6.png|center|500px]]
[[image:cima6.png]]
 
<br><br></center>
 
  
 
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 223: 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 233: 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 es un trap "complejo", que 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, numericos, alfanumericos, 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:
  
<center>
+
[[Image:Traps9.JPG|center|800px|Haga clic para ampliar]]
<br>
 
[[image:Compex_trap_def3.png|center]]
 
<br><br>
 
</center>
 
  
Si nos fijamos en detalle en la información extendida (Custom data) existen varios trozos de información util. 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 haga "match" 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.  
 +
 
 +
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 () permite "copiar" información, usando una expresión de búsqueda.
+
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 261: 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 269: Line 322:
 
En resumen, así se crearía la alerta completa:
 
En resumen, así se crearía la alerta completa:
  
<center>
+
[[Image:Compex_trap_def1.png|center|640px]]
<br><br>
+
 
[[image:Compex_trap_def1.png|600px|center]]
+
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.
<br><br>
+
 
</center>
+
{{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:
  
Y así se visualizaría en el visor de eventos.
+
[[Image:Compex_trap_def4.png|center|500px]]
  
<center>
+
=== Ejemplo adicional ===
<br><br>
 
[[image:Compex_trap_def2.png|750px|center]]
 
<br><br>
 
</center>
 
  
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:
+
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.
  
<center>
+
Este es el trap recibido del ''switch'':
<br><br>
 
[[image:Compex_trap_def4.png|600px|center]]
 
<br><br>
 
</center>
 
  
Esta alerta seria "Compatible" con la anterior, de forma que para el mismo trap, podrían saltar dos eventos diferentes:
+
[[Image:Another_trap_alert_sample.png|center|800px|Haga clic para ampliar]]
  
<center>
+
De esta manera se necesita el mensaje de correo:
<br><br>
 
[[image:Compex_trap_def5.png|650px|center]]
 
<br><br>
 
</center>
 
  
== Asociar un trap al resto de alertas de Pandora / SNMP Agent trap forwarding ==
+
[[Image:trap_email.png|center|700px]]
  
Las alertas definidas sobre traps son completamente independientes del motor de alertas de Pandora, 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 ningun 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.
+
El trap debe ser definido en Pandora FMS de la siguiente manera:
  
<center>
+
[[Image:another_snmp_trap_sample.png|center|630px]]
''Modulo especial SNMPTrap, conteniendo el trap reenviado desde la consola SNMP'':
 
<br><br>
 
[[image:Snmptrap_agent.png|center]]
 
</center><br><br>
 
  
Para poder hace esto, existe un método llamado "Agent SNMP Trap Forwarding". Esta opción (general al servidor) reenvia 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 linea de texto al agente dentro de ese modulo, que es un modulo que se define solo cuando llega el primer trap.
+
[[Image:another_snmp_trap_sample2.png|center|600px]]
  
Sobre ese módulo se pueden especificar alertas de texto, siendo estas completamente estandard, como las de cualquier modulo. 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.
+
== Asociar un trap al resto de alertas de Pandora / SNMP Agent trap forwarding ==
  
<center>
+
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.
''Aspecto que tiene el modulo "SNMPTrap"'':
 
<br><br>[[Image:Snmptrapforward2.png|center]]
 
</center><br><br>
 
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:
 
  
<center><br><br>
 
''Opción de configuración para habilitar el reenvío de traps a los agentes'':<br>
 
[[image:Snmptrap_agent_forwardsetup.png|center]]
 
</center><br><br>
 
  
Si se cambia esta opción, hay que reiniciar el servidor de Pandora FMS para que empieze a actuar.
+
''Modulo especial SNMPTrap, conteniendo el trap reenviado desde la consola SNMP:''
  
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.
+
[[Image:Snmptrap_agent.png|center|700px]]
  
== Filtrado de traps en el servidor ==
+
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.
  
Algunos sistemas reciben un número elevado de traps de los cuales sólo interesa monitorizar un pequeño porcentaje. Desde la versión 3.2 de Pandora FMS es posible filtrar los traps que recibe el servidor para evitar cargar la aplicación de manera innecesaria.
+
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.
  
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.
+
''Aspecto que tiene el modulo "SNMPTrap":''
<br><br>
 
<center>
 
[[File:Snmp_filter_editor.png|650px|center]]
 
</center>
 
<br>
 
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:
 
  
%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%a[**]%N[**]%w[**]%W[**]%q[**]%v\n
+
[[Image:Snmptrapforward2.png|center|600px]]
  
Siendo:  
+
Esta es una característica ''Enterprise'' y se configura en '''Setup''' > '''Setup''' > '''Enterprise''' con la siguiente opción:
  
* %y: Año actual.
+
''Opción de configuración para habilitar el reenvío de traps a los agentes:''
* %m: Mes actual (numérico).
 
* %l: Día del mes actual.
 
* %h: Hora actual.
 
* %j: Minuto actual.
 
* %k: Segundo actual.
 
* %a: Dirección de orígen (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.1.1 podríamos definir el siguiente filtro:
+
[[Image:Snmptrap_agent_forwardsetup.png|center|700px]]
<br><br>
 
<center>
 
[[image:Snmp_filter_example.png|650px|center]]
 
</center>
 
  
 +
Si se cambia esta opción, hay que reiniciar el servicio del servidor de Pandora FMS para que empiece a actuar.
  
[[Category:Documentation]]
+
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 muchisima informacion. A veces ocurre que la unica monitorizacion que podamos hacer está basada en traps. Para ello podemos optar por "postprocesar" la informacion recogida en un trap a traves de un script externo, que actua 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 informacion de un trap   a un script, como resultado de una alerta. He usado este trap para el ejemplo, es la vista del trap tal cual estaria en el log de la consola de snmp de Pandora:
+
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
+
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
  
<center><br>
+
[[Image:SNMP2.JPG|center|700px]]
[[File:Snmp plugin1.png|600px|center]]
 
<br>
 
</center>
 
  
<center><br>
+
[[Image:SNMP3.JPG|center|800px]]
[[File:Snmp plugin2.png|550px|center]]
 
<br>
 
</center>
 
  
En las capturas se puede ver como se crearia una alerta especial, que ejecuta un script con los contenidos completos del trap (_data_) y como 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 tipologia (.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 dejandolo en /var/spool/pandora/data_in a modo de datos como si vinieran de un agente. Un script basico para este caso podría por ejemplo, generar inforamacion compleja ya que tenemos bastante informacion 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 394: 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 generico mas un numero 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 deberia tener el siguiente aspecto.
+
El XML generado debería tener el siguiente aspecto.
  
 
<pre>
 
<pre>
Line 410: Line 419:
 
     <name><![CDATA[events]]></name>
 
     <name><![CDATA[events]]></name>
 
     <description><![CDATA[]]></description>
 
     <description><![CDATA[]]></description>
     <type>generic_string</type>
+
     <type>async_string</type>
 
     <datalist>
 
     <datalist>
 
       <data><value><![CDATA[AIX_Software_Failure]]></value></data>
 
       <data><value><![CDATA[AIX_Software_Failure]]></value></data>
Line 420: Line 429:
 
</pre>
 
</pre>
  
La aplicacion es infinita, pero eso si, cada script debe ser particularizado ya que puede tener una estructura muy dinámica, en muchos sistemas la informacion que se recibe es no solo de texto sino tambien numérica, con lo que puede alimentar a módulos de información numerica para poder representar graficas etc, eso si, los datos siempre son asincronos.
+
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:
  
''.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: "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  
.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%"
+
  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 = ""  .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 puedes vr, los traps pueden ser utilizados para recolectar información del CPU, el Disco, o la Memoria. La idea general detras 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:
+
.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%"
  
# Crear el handler script. Puedes basar tu trabajo en el script que te proporcionamos más abajo.
+
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 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 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:
+
# Crear el ''handler script''. Puede basar su trabajo en el ''script'' que se proporciona más abajo.
 +
# Crear un comando de alerta.
 +
# 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.
  
 
==== Paso 1:Trap handler: esx_trap_manager.pl ====
 
==== Paso 1:Trap handler: esx_trap_manager.pl ====
 
  
 
<pre>
 
<pre>
Line 521: Line 531:
 
==== Paso 2: Crear el comando de alerta====
 
==== Paso 2: Crear el comando de alerta====
  
En este ejemplo, he puesto el script del comando en /tmp, ponlo en un lugar más seguro, y asegúrate 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:Trap_handler_step2.png|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 envias 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.
  
<center><br><br>
+
[[Image:SNMP4.JPG|center|800px]]
[[image:Trap_handler_step3.png|700px|center]]
 
</center><br><br>
 
  
 
==== 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.  
  
<center><br><br>
+
[[Image:SNMP5.JPG|center|600px]]
[[image:Trap_handler_step4.png|500px|center]]
 
</center><br><br>
 
  
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 estandar.
+
Esto es un ejemplo de cómo se verá la información. Con estos datos, podrá gestionarla como módulos estándar.
<br><br>
+
 
<center>
+
[[Image:SNMP6.JPG|center|800px|Haga clic para ampliar]]
[[image:Trap_handler_step5.png|650px|center]]
+
 
</center>
+
[[Image:SNMP7.JPG|center|800px]]
<br>
+
 
[[Pandora:Documentation|Volver a Indice de Documentacion Pandora FMS]]
+
== 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.
 +
 
 +
 
 +
 
 +
=== 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
 +
 
 +
=== 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
 +
 
 +
=== 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 [[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
 +
 
 +
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 [http://net-snmp.sourceforge.net/wiki/index.php/TUT:snmptrap_SNMPv3#SNMPv3_TRAPs NET-SNMP v3 Traps]
 +
 
 +
 
 +
 
 +
 
 +
== 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 [[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'''
 +
 
 +
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>
 +
/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
 +
</pre>
 +
 
 +
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 <code>/etc/pandora/pandora_server.conf</code>.
 +
* 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.
 +
 
 +
=== 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 <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 ==
  
 +
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 ===
 +
 +
[[Image: Remote snmp trap schema.jpg|center|600px]]
 +
 +
* 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.
 +
 +
{{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 ===
 +
 +
* Un '''snmptrapd''' local que está recibiendo traps.
 +
* Un agente de Pandora FMS local.
 +
* Una instalación de Pandora FMS.
 +
 +
=== Configuración ===
 +
 +
==== snmptrapd ====
 +
 +
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
 +
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
 +
 +
==== 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, <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
 +
 +
==== 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 <code>/etc/pandora/pandora_server.conf</code>:
 +
 +
* 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
 +
 +
{{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 ==
 +
 +
Esta herramienta permite generar traps personalizados que posteriormente puede observar en la consola SNMP.
 +
 +
[[Image:Generador_de_traps.png|center|650px]]
 +
 +
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: <code>1.3.6.1.2.1.2.2.1.8</code>.
 +
;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.
 +
 +
[[Pandora:Documentation|Volver al Índice de Documentación Pandora FMS]]
 +
 +
[[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