martes, 31 de marzo de 2009

APAN

Ahora hablaremos de APAN el cual es una herramienta para ser integrada en Nagios y poder utilizarla para obtener estadísticas del desempeño de nuestros equipos, todo esto en forma gráfica y vía WEB.

Obteniendo Apan y requerimientos previos.



Previamente necesitamos RRDTool instalado para poder continuar, ya que RRDTool es una herramienta para guardar y desplegar datos de tiempo-serie (ejemplo: ancho de banda de una red, temperatura de una maquina en un cuarto, etc., lo bueno de este software es que guarda la información en una forma muy compacta y que a la larga no se expande demasiado y puede usarse vía scripts o frontends.
RRD significa Round Robin Database.



Instalando Apan



Para instalar Apan hacemos lo siguiente


Vamos a nuestro directorio de Nagios (i.e. /usr/local/nagios) y extraemos el archivo de Apan.
Un nuevo directorio es creado llamado apan, solo verificamos que el usuario de Nagios tenga privilegios en
el directorio y que pueda ejecutar el archivo apan-sql.sh


Copiamos los archivos apan-sql.cgi y generate-sql.cgi a el directorio cgi-bin de Nagios (i.e. /usr/local/nagios/sbin), los cuales hacemos ejecutables para el servidor WEB.


Copiamos el archivo graph.png al directorio logos de Nagios (i.e. /usr/local/nagios/share/images/logos).



Configurando Apan.



Primero configuramos el entorno:


Modificamos apan.defs a nuestras necesidades, si tenemos Apan en otro directorio que no sea el /usr/local/nagios/apan-sql tenemos que poner el path de apan.defs en los archivos apan-sql.sh, apan-sql.cgi, generate.cgi y apanconf-sql.
Creamos la base de datos, Apan esta preconfigurado para MySQL pero puede ser portado a otra base modificando sql.conf y createdb.sh.
Debemos tener funcionando MySQL y entramos al mismo como superusuario o usamos cualquier frontend de MySQL como phpMyAdmin, MysqlBrowser, etc. y ejecutamos los siguientes comandos:
create database nagios;
grant all on nagios.* to nagios@localhost identified by 'nagios123';
podemos usar nuestro propio nombre de la base de datos, usuario y contraseña.

Actualizamos el archivo sql.conf con los datos que nosotros proporcionamos en el paso anterior.


Creamos la base de datos ejecutando el archivo createdb.sh


Con Apan viene el script apanconf-sql el cual podemos usarlo para manejar los servicios de Apan, antes de usarlo ocupamos modificarlo a nuestras necesidades:

NAGIOSUSERGROUP : Usuario y grupo de Nagios (default: nagios / nagios)

EXTINFOFILE : El archivo donde serviceextinfo esta guardado. Serviceextinfo es usado para poner un enlace y un icono a un lado del servicio en la interfaz WEB de Nagios. El archivo debe de estar configurado en el archivo cgi.cfg de Nagios usalmente podemos usar el mismo serviceextinfo que ya esta en el directorio etc.

CGIURL: El directorio CGI de Nagios usalmente localizado en nagios/cgi-bin o /usr/local/nagios/sbin.

RRDDIR: El directorio donde estan guardados los archivos RRD generados usualmente en $NAGIOSDIR/rrd. RRDSTEP, RRDDSMIN, RRDDSMAX, RRDDRAWTYPE: Especifica el intervalo base en segundos en el cual los datos seran agregados en los archivos RRD, valores mínimos y máximos y el tipo de línea utlizada para las gráficas. Default 60,0, U y Line2. Para mayor referencia ve el Manual de RRDTool.

RRAS: Archivos Round-Robin predeterminados para nuevos archivos RRD. Valores predeterminados son: RRA:AVERAGE:0.5:1:50400 RRA:AVERAGE:0.5:60:43800
Esto significa un archivo con un promedio de 1 minuto de los ultimos 35 dias y un archivo con promedios de 1 hora de los ultimos 5 años.

HINTS: Para que sea mas facil apanconf despliega los ultimos valores de graph-label, graph-unit y extra arguments de rrdtool, podemos copiarlos y pegarlos cuando queramos crear nuevos servicios. El valor 0 desactiva la funcion.

Asi nos quedaria el check-command para Apan:

    define command{
    command_name apan-sql
    command_line /usr/local/nagios/apan-sql/apan-sql.sh $ARG1$ $HOSTNAME$ $SERVICEDESC$ $TIMET$ $ARG2$ $ARG3$
    }



Añadiendo Servicios.



Ahora viene lo interesante, agregar servicios de Apan a Nagios.


Para agregar servicios a Nagios hacemos lo siguiente:
Definimos el servicio por ejemplo ping y load:
define service {
host_name server1,server2
service_description Ping
check_command apan-sql!ping!100.0,20%!500.0,60%
name Ping
use generic-service
normal_check_interval 1
}


define service {
host_name server3,server4
service_description Load
check_command apan-sql!load!70!90
use generic-test
normal_check_interval 1
}



Ahora agregamos los servicios en Apan ejecutando apanconfig-sql:
1. Seleccionamos 1 (Agregar nuevo servicio).
2. Escribimos el nombre del equipo (Igual que en Nagios, es sensible mayúsculas y minúsculas).
3. Escribimos el nombre del servicio (El mismo que en service_description en Nagios).
4. Escribimos comentarios adicionales (opcional).
5. Escribimos el nombre del archivo RRD o aceptamos el que esta propuesto.
6. Escribimos el encabezado de la gráfica (graph-label).
7. Escribimos el encabezado de las unidades (graph-unit).
8. Escribimos el valor de los pasos para el RRD o aceptamos el valor propuesto.
9. Escribimos los argumentos extras para rrdtool, por ejemplo "-b 1024" escalara la gráfica a unidades de 1024 en vez de 1000,
"-10" hara que el eje de las y empiecen en cero. Para más referencia de estos valores checa el manual antes mencionado de RRTool.
10. Escribimos un argumento para el plugin (hay ejemplos abajo).
11. Escribimos el nombre del DS que corresponda para el argumento de arriba por ejemplo c-used.
12. Escribimos el tipo de DS el cual puede ser 1 para GAUGE y 2 para COUNTER.
13. Escribimos los valores del heartbeat,min,max y drawing-type o simplemente aceptamos los valores.
14. Escribimos el nombre de el siguiente argumento para ir al paso 11 o simplemente presionamos 11 si ya terminamos.


Para que se entienda mejor esta información, a continuación estan unos ejemplos.



Ejemplos:
Monitorear el uso en disco del drive C en un equipo con Windows.
define service {
host_name winsrv1
service_description Disk usage
check_command apan-sql!disk_by_snmp!90!95
use service-template
}
Ejecutamos apanconf-sql, seleccionamos 1 e introducimos los siguientes valores:
Hostname: winsrv
Service: Disk usage
Graph-label: Disk usage
Graph-unit: %
Argument #1: C
DS-name: C
DS-type: 1
Y presionamos enter cuando nos solicite el sergundo argumento.


Monitorear el trafico de red en un equipo.
Agregamos el servicio a Nagios:
define service {
host_name server2
service_description Net usage
check_command apan-sql!snmpget!10!20
use generic-hl
notifications_enabled service-template
}
Ejecutamos apanconf-sql, seleccionamos 1 e introducimos los siguientes valores:
Hostname: server2
Service: Net usage
Graph-label: Network throughput
Graph-unit: Bytes/sec
Argument #1: public:.1.3.6.1.2.1.2.2.1.16.2
DS-name: IN
DS-type: 2
Argument #2 public:.1.3.6.1.2.1.2.2.1.10.2
DS-name: OUT
DS-type: 2
Cuando solicite el tercer argumento presionamos enter.


Agregamos un icono y un enlace en el archivo serviceextinfo.cfg:
define serviceextinfo{
host_name server
service_description Ping
notes_url /nagios/cgi-bin/apan.cgi?host=server&service=Ping
icon_image graph.png
icon_image_alt View graphs
}



Eso es todo, ya tienen funcionando Apan para crear graficas como esta:

Recuerden que no inmediatamente apareceran datos, se tienen que ir llenando las bases rrd que crearon, pero si alcabo de el tiempo que ustedes especificaron no obtienen información es importante ver si el usuario Nagios tiene permisos en el directorio y archivos de rrd.


Si tienen preguntas envienme un correo, esto me lo avente lo más rápido que pude y todavia no esta completo, faltan más ejemplos.

No hay comentarios:

Publicar un comentario en la entrada

Nota: solo los miembros de este blog pueden publicar comentarios.