INT-1158_182-Guia_Integracion_Nagios
Tipo de Documento
¡Error! Nombre desconocido de propiedad de documento.
Código de Documento
Versión
Paginas
INT-1158_182-
Guia_Integracion_Nagios
1.0
13
Autor
Andriy Neverenchuk
Cambios desde la última versión
Lista de Distribución
ITCGAE - Dep Informática Corporativa
Revisado por:
David García
Aprobado por
Firma
Firma
Fecha
Fecha
Tipo de Documento
¡Error! Nombre desconocido de propiedad de documento.
Código de Documento
INT-1158_182-Guia_Integracion_Nagios
Versión
1.0
Fecha
¡Error!
Nombre
desconocido
de
C/ Recoletos 3, 1ª . 28001 Madrid . Tel.: 902 05 25 30 . Fax: 91 522 13 17 . informacion@redabogacia.org . http://redabogacia.abogacia.es2
Back to top
Control de Documentación
Histórico de Versiones
Versión
Fecha
Detalles
1.0
20/08/2013
Elaboración inicial del documento
Tipo de Documento
¡Error! Nombre desconocido de propiedad de documento.
Código de Documento
INT-1158_182-Guia_Integracion_Nagios
Versión
1.0
Fecha
¡Error!
Nombre
desconocido
de
C/ Recoletos 3, 1ª . 28001 Madrid . Tel.: 902 05 25 30 . Fax: 91 522 13 17 . informacion@redabogacia.org . http://redabogacia.abogacia.es3
INDICE
Histórico de Versiones
.................................................................................................................................2
INDICE ....................................................................................3
1.
INTRODUCCIÓN .......................................................................4
1.1.
ABREVIATURAS Y DEFINICIONES
...............................................................................................4
1.1.1.
Abreviaturas
.................................................................................................................................. 4
1.1.2.
Definiciones
................................................................................................................................... 4
2.
ARQUITECTURA .......................................................................5
3.
DISTRIBUCIÓN ........................................................................6
4.
INTEGRACIÓN .........................................................................7
4.1.
INSTALACIÓN DEL MODULO DE ALERTAS NAGIOS .................................................7
4.2.
Integración del Módulo de Alertas Nagios en la aplicación ..................................................7
5.
FUNCIONALIDAD....................................................................10
5.1.
Activar alerta Nagios..............................................................................................................11
5.2.
Desactivar alerta Nagios.........................................................................................................11
5.3.
Test email alerta Nagios.........................................................................................................12
6.
PROBLEMAS CONOCIDOS. .........................................................13
Tipo de Documento
¡Error! Nombre desconocido de propiedad de documento.
Código de Documento
INT-1158_182-Guia_Integracion_Nagios
Versión
1.0
Fecha
¡Error!
Nombre
desconocido
de
C/ Recoletos 3, 1ª . 28001 Madrid . Tel.: 902 05 25 30 . Fax: 91 522 13 17 . informacion@redabogacia.org . http://redabogacia.abogacia.es4
1. INTRODUCCIÓN
Nagios es un sistema de monitorización en software libre, bajo licencia GPL2, que nos permite
conocer en todo momento el estado de nuestros sistemas, monitorizando nuestros servidores
y los servicios que en éstos se alojan, generando alertas y alarmas cuando el comportamiento
de los mismos no sea el esperado. Esta monitorización permite a los administradores de
sistemas abstraerse de la vigilancia continua, permitiéndoles desempeñar otras funciones y
tareas sin tener que estar constantemente revisando que todo está funcionando. Para la
recepción de alarmas, la aplicación es bastante flexible puesto que éstas pueden recibirse
mediante correo electrónico y/o SMS, a través de un servidor de mensajera Jabber o utilizando
un plugin para Thunderbird.
El Modulo de Alertas Nagios (MAN) es una aplicación (desarrollada para CGAE) que se
distribuye como un jar y permite integrar en una aplicación existente las alertas Nagios.
Con el Módulo de Alertas Nagios es posible activar y desactivar las alertas Nagios.
1.1.
ABREVIATURAS Y DEFINICIONES
1.1.1.
Abreviaturas
ABREVIATURA
DESCRIPCIÓN
MAN
Modulo de Alertas Nagios
CGAE
Consejo General de la Abogacía Española
WS
Web Services
1.1.2.
Definiciones
Concepto
Descripción
Nagios
Sistema de monitorización de servicios y servidores
Cliente
Cliente es la aplicación que integra el jar del Módulo de Alertas
Nagios
Tipo de Documento
¡Error! Nombre desconocido de propiedad de documento.
Código de Documento
INT-1158_182-Guia_Integracion_Nagios
Versión
1.0
Fecha
¡Error!
Nombre
desconocido
de
C/ Recoletos 3, 1ª . 28001 Madrid . Tel.: 902 05 25 30 . Fax: 91 522 13 17 . informacion@redabogacia.org . http://redabogacia.abogacia.es5
2. ARQUITECTURA
El Módulo de Alertas Nagios se distribuirá como una librería llamada nagios-core.jar que podrá
integrarse dentro de las aplicaciones que se pretendan monitorizar con la herramienta Nagios.
Características generales:
?
Las aplicaciones cliente establecerán una alerta cuando ocurra algún error grave que
deba ser notificado al administrador del sistema.
?
El Módulo de Alertas Nagios accederá a su propia base de datos de configuración
empleando un pool de conexiones que deberá llamarse NagiosPoolDS.
?
El Módulo de Alertas Nagios escribirá las alertas en archivos de texto que dejará en el
directorio empleado por Nagios para manejar las notificaciones de alerta.
cmp Component Model Nagios
org.redabogacia.nagios
JG
MCE
org.redabogacia.nagios
ECOS
org.redabogacia.nagios
Base de datos JG
Base de datos MCE
Base de datos E COS
Base de datos Nagios
Sistema de directorios Nagios
Name:
Package:
Versi on:
Author:
Component Model Nagios
Component Model
1.0
david.garcia
Tipo de Documento
¡Error! Nombre desconocido de propiedad de documento.
Código de Documento
INT-1158_182-Guia_Integracion_Nagios
Versión
1.0
Fecha
¡Error!
Nombre
desconocido
de
C/ Recoletos 3, 1ª . 28001 Madrid . Tel.: 902 05 25 30 . Fax: 91 522 13 17 . informacion@redabogacia.org . http://redabogacia.abogacia.es6
3. DISTRIBUCIÓN
El Módulo de Alertas Nagios se distribuirá como una librería que se incluirá en las aplicaciones
cliente.
?
nagios-core-{version}.jar
–
Archivo JAR del Módulo de Alertas Nagios
?
nagios-core-{version}-javadoc.jar
–
Archivo JAR con la documentación javadoc del
Módulo de Alertas Nagios. Los entornos de desarrollo como Eclipse IDE permiten
establecer la localización de la documentación de la librería mediante este tipo de
archivos.
Dependencias de nagios-core-{version}.jar:
?
log4j-1.2.17.jar
?
mybatis-3.2.2.jar
?
mail.jar
Tipo de Documento
¡Error! Nombre desconocido de propiedad de documento.
Código de Documento
INT-1158_182-Guia_Integracion_Nagios
Versión
1.0
Fecha
¡Error!
Nombre
desconocido
de
C/ Recoletos 3, 1ª . 28001 Madrid . Tel.: 902 05 25 30 . Fax: 91 522 13 17 . informacion@redabogacia.org . http://redabogacia.abogacia.es7
4. INTEGRACIÓN
4.1.
INSTALACIÓN DEL MODULO DE ALERTAS NAGIOS
Instalación del Módulo de Alertas Nagios en un servidor. Es necesario disponer de los scripts
de base de datos proporcionados junto con el código fuente.
1. Crear la base de datos de configuración del Módulo de Alertas Nagios. Ejecutar los
scripts de creación de base de datos que se encuentran el directorio del proyecto
/nagios-core/src/main/scripts/creacion
2. Configurar el Módulo de Alertas Nagios. Ejecutar los scripts proporcionados con la
primera
entrega
que
se
encuentran
en
el
directorio
/nagios-
core/src/main/scripts/NAGIOS_PRE_001_001
3. Crear un pool de conexiones en el servidor de aplicaciones llamado NagiosPoolDS.
4. Crear el directorio donde se crearán los archivos de alerta consumidos por Nagios.
4.2.
Integración del Módulo de Alertas Nagios en la aplicación
Para integrar MAN en una aplicación hay que realizar siguientes pasos:
5. En caso necesario, realizar los pasos previos para instalar el Módulo de Alertas Nagios.
6. Insertar el cliente en la tabla CLIENTE_NAGIOS. El hash del cliente se obtiene de la
función Oracle - ORA_HASH('TEST') (Base de Datos NAGIOS).
El cliente tiene que indicar en la columna url_script donde se encuentra el script de
Nagios para ejecutar. En la columna url_file_txt_nagios
–
la ruta donde se dejara el
fichero nagios creado. Y en la columna delete_interval_nagios
–
el tiempo en días, para
borrar ficheros nagios.
7. Insertar
mensajes
alertas
nagios
para
aplicación
en
la
tabla
MENSAJES_ALERTAS_NAGIOS (Base de Datos NAGIOS).
8. Crear
asociación
entre
el
cliente
y
mensajes
alerta
en
la
tabla
ALERTAS_CLIENTE_NAGIOS (Base de Datos NAGIOS).
Tipo de Documento
¡Error! Nombre desconocido de propiedad de documento.
Código de Documento
INT-1158_182-Guia_Integracion_Nagios
Versión
1.0
Fecha
¡Error!
Nombre
desconocido
de
C/ Recoletos 3, 1ª . 28001 Madrid . Tel.: 902 05 25 30 . Fax: 91 522 13 17 . informacion@redabogacia.org . http://redabogacia.abogacia.es8
9. Copiar las librerías del Módulo de Alertas Nagios (nagios-core.jar) y sus dependencias
al modulo de aplicación donde se pretende integrar MAN. Dependencias:
?
mybatis-3.2.2.jar
?
log4j.jar
?
mail.jar (puede estar en el classpath del servidor)
?
activation.jar (puede estar en el classpath del servidor)
10. Crear en la aplicación la constante ID_CLIENTE (valor de hash cliente) y constantes
mensajes ID_ALERTA que se han definido en la tabla MENSAJES_ALERTAS_NAGIOS.
11. Implementar las llamadas al Módulo de Alertas Nagios en aquellos puntos del código
en los que sea necesario crear una alerta en Nagios.
Recomendaciones y buenas practicas.
Para mantener un estándar de nombres crear el paquete:
com.organizacion.aplicacion.nagios
Crear una clase fachada para acceder al Módulo de Alertas Nagios que englobara los métodos
de nagios y tendrá constantes de cliente y alertas.
Ejemplo de clase fachada:
public class NagiosFacade {
private static final ILog logger = LogFactory.getCoreLog(NagiosFacade.class.getName());
// idCliente
private static final String ID_CLIENTE_REGTEL = "1234567";
// declaracion de alertas
public static final String ERROR_DOCUSHARE_CONEXION = "ERROR_DOCUSHARE_CONEXION";
public static void setAlertaNagios(final String idAlerta, final String infoAdicional) {
try {
NagiosFactory.getInstance().setAlertaNagios(ID_CLIENTE_REGTEL, idAlerta,
infoAdicional);
Tipo de Documento
¡Error! Nombre desconocido de propiedad de documento.
Código de Documento
INT-1158_182-Guia_Integracion_Nagios
Versión
1.0
Fecha
¡Error!
Nombre
desconocido
de
C/ Recoletos 3, 1ª . 28001 Madrid . Tel.: 902 05 25 30 . Fax: 91 522 13 17 . informacion@redabogacia.org . http://redabogacia.abogacia.es9
} catch (Exception e) {
logger.error(" NagiosException "+e.toString());
}
}
public static void setAlertaNagios(final String idAlerta) {
try {
NagiosFactory.getInstance().setAlertaNagios(ID_CLIENTE_REGTEL, idAlerta, null);
} catch (Exception e) {
logger.error(" NagiosException "+e.toString());
}
}
... metodos de unSetAlertasNagios
Ejemplo de llamada a la clase fachada:
NagiosFacade.setAlertaNagios(NagiosFacade.ERROR_DOCUSHARE_CONEXION, "URL: "+url);
Tipo de Documento
¡Error! Nombre desconocido de propiedad de documento.
Código de Documento
INT-1158_182-Guia_Integracion_Nagios
Versión
1.0
Fecha
¡Error!
Nombre
desconocido
de
C/ Recoletos 3, 1ª . 28001 Madrid . Tel.: 902 05 25 30 . Fax: 91 522 13 17 . informacion@redabogacia.org . http://redabogacia.abogacia.es10
5. Funcionalidad
El Módulo de Alertas Nagios se usa para avisar a un administrador de fallos críticos de su
aplicación, que normalmente necesitan su intervención para su arreglo.
Por ejemplo, cuando el servicio Web de la Plataforma Firma Digital no funciona o un listener
ha fallado con un error irrecuperable.
Hay unas alertas genéricas que pueden aplicar en varios clientes, como por ejemplo el mal
funcionamiento de un servicio Web utilizado por múltiples aplicaciones. Ejemplo:
?
Plataforma Firma: WS_PLATAFORMAFIRMA_KO - WS de Plataforma Firma esta
caído.
Si la funcionalidad que fallaba ha vuelto a la normalidad el cliente tiene que desactivar la
alerta. Código de ejemplo:
try{
llamadaWSPlataformaFirma(parámetros …);
// si la llamada se ha realizado sin errores se desactiva alerta
NagiosFactory.getInstance().unSetAlertaNagios(NagiosFactory.idAlerta,
infoAdicional);
}catch (OtraExcepcionControlada e){
}catch (WSPlataformaFirmaException e){
// ocurrió un error entonces se activa alerta nagios
NagiosFactory.getInstance().setAlertaNagios(NagiosFactory.idAlerta,
infoAdicional);
}
Para usar funcionalidad del Módulo de Alertas Nagios el cliente tiene que estar dado de alta en
la base de datos de configuración (BD Nagios, tabla CLIENTE_NAGIOS) y estar activo (activo
–
‘SI’). Tener mensajes (tabla
- MENSAJES_ALERTAS_NAGIOS) y relación creada entre cliente-
mensaje (tabla
–
ALERTAS_CLIENTE_NAGIOS).
MAN hace control interno de gestión alertas. Cuando se hace activar alerta se guarda en la
tabla GESTION_ALARMAS_NAGIOS y se llama script Nagios para realizar aviso.
Si una alerta está activa para el cliente (se encuentra en la tabla GESTION_ALARMAS_NAGIOS)
no se le vuelve a activar ni a enviar hasta que no la desactive el mismo o no pase el tiempo de
frecuencia envío Cliente (tabla CLIENTE_NAGIOS columna FRECUENCIA_ENVIO) o no se borre
Tipo de Documento
¡Error! Nombre desconocido de propiedad de documento.
Código de Documento
INT-1158_182-Guia_Integracion_Nagios
Versión
1.0
Fecha
¡Error!
Nombre
desconocido
de
C/ Recoletos 3, 1ª . 28001 Madrid . Tel.: 902 05 25 30 . Fax: 91 522 13 17 . informacion@redabogacia.org . http://redabogacia.abogacia.es11
pasados x días por el procedimiento interno de base de datos. (Procedimiento BD controla si
pasados x días por algún motivo no se ha desactivado una alerta).
En el caso que se produjera un error al activar o desactivar una alerta MAN escribirá el error en
el fichero de logs, enviará el correo al cliente y lanzará una excepción NagiosException con la
descripción del error.
Para que se envíe el correo con el error, el cliente tiene que tener los correos creados en la
tabla CLIENTE_NAGIOS (columna CORREO). Un cliente puede tener varios correos separados
por un ‘;’. En la columna FRECUENCIA_ENVIO se declara tiempo
de espera en segundos para
enviar el mismo error y evitar envíos masivos de un mismo error. (Se usa para el control de
envíos alertas Nagios y envíos correos).
5.1.
Activar alerta Nagios.
Para crear una Alerta Nagios se hace una llamada al método setAlertaNagios. Ejemplo de uso:
NagiosFactory.getInstance().setAlertaNagios(NagiosFactory.idAlerta, infoAdicional);
Los parámetros son:
?
idAlerta - identificador de alerta (parámetro obligatorio)
?
infoAdicional - información adicional que será añadida en mensaje, si es diferente
de null. (parametro opcional)
5.2.
Desactivar alerta Nagios.
Para desactivar una Alerta Nagios se hace una llamada al método unSetAlertaNagios. Ejemplo
De uso:
NagiosFactory.getInstance().unSetAlertaNagios(NagiosFactory.idAlerta, infoAdicional);
Los parámetros son:
?
idAlerta - identificador de alerta (parámetro obligatorio)
?
infoAdicional - información adicional que será añadida en mensaje, si es diferente de
null. (parametro opcional)
Tipo de Documento
¡Error! Nombre desconocido de propiedad de documento.
Código de Documento
INT-1158_182-Guia_Integracion_Nagios
Versión
1.0
Fecha
¡Error!
Nombre
desconocido
de
C/ Recoletos 3, 1ª . 28001 Madrid . Tel.: 902 05 25 30 . Fax: 91 522 13 17 . informacion@redabogacia.org . http://redabogacia.abogacia.es12
5.3.
Test email alerta Nagios.
Esta funcionalidad sirve solo para realizar las pruebas de envío correos. Ejemplo de uso:
NagiosFactory.getInstance().testEmailNagios(ID_CLIENTE_REGTEL, "Regtel test email");
Tipo de Documento
¡Error! Nombre desconocido de propiedad de documento.
Código de Documento
INT-1158_182-Guia_Integracion_Nagios
Versión
1.0
Fecha
¡Error!
Nombre
desconocido
de
C/ Recoletos 3, 1ª . 28001 Madrid . Tel.: 902 05 25 30 . Fax: 91 522 13 17 . informacion@redabogacia.org . http://redabogacia.abogacia.es13
6. Problemas conocidos.
1. Problema al integrar la librería nagios-core en un modulo de WS (Axis 1)
Cuando se integra Nagios en un modulo que usa jrockit y WS Axis 1, hay un conflicto en las
librerías myBatis y jaxrpc.jar .
Falla con la excepción:
org.redabogacia.core.nagios.mybatis.exception.OpenSessionException:
java.lang.LinkageError: Class javax/xml/namespace/QName violates loader constraints
Solución:
Borrar del modulo WS que usa Axis 1 jaxrpc.jar la clase QName tiene jrockit (rt.jar)
Back to top