SafeChildren Banner

Havoc Oracle Solaris Experts

viernes, 2 de abril de 2010

Monitorizar Servicios Solaris 10 Nagios - Parte 2

Introducción
En la primera parte de Monitorización de Servicios SMF de Solaris 10, vimos cómo podemos utilizar algunos scipts para ver el estado de nuestros servicios bajo Solaris SMF. En esta ocasión, vamos a ver cómo configurar nuestro Nagios para que remotamente acceda a la información y nos muestres las alertas que nosotros configuremos.

Antes de comenzar, vamos a explicar la arquitectura y, de esta forma, hacer más claro el proceso. En primer lugar tenemos una máquina donde se está ejecutando nuestro servicio Nagios <nagios-server> y, por otro lado tenemos una máquina <zion> en la cual está instalado Tomcat6 como Servicio SMF en Solaris 10.

Lo primero que vamos a hacer es crear el usuario <svcmon> en la máquina que queremos monitorizar -zion-, y vamos a generar sus claves ssh para permitir el acceso sin contraseña. Así mismo, vamos a limitar el número de procesos que puede crear el usuario y pondremos una password aleatoria -ya que sólo nos conectaremos con la máquina de Nagios a través de SSH-
root@zion # groupadd svcmon
root@zion # useradd -s /bin/bash -g svcmon -d /export/home/svcmon -m svcmon
64 blocks
root@zion # passwd svcmon
Nueva contraseña:
Vuelva a escribir la nueva contraseña:
passwd: la contraseña se ha cambiado para svcmon satisfactoriamente
root@zion # projadd -c 'Solaris SMF Monitor' user.svcmon
root@zion # projmod -sK 'task.max-lwps=(priv,10,deny)' user.svcmon
root@zion # su - svcmon
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
svcmon@zion:~ > mkdir scripts
svcmon@zion:~ > cd scripts/
svcmon@zion:~/scripts > /usr/sfw/bin/wget http://blog.sfchildren.com/blogger/solaris-smf-nagios/check_svc
svcmon@zion:~/scripts > chmod +x check_svc
svcmon@zion:~/scripts > ./check_svc
USAGE: ./check_svc
svcmon@zion:~/scripts > ./check_svc tomcat_6:default_64bits
OK tomcat_6:default_64bits is online

svcmon@zion:~/scripts > cd
svcmon@zion:~ > ssh-keygen -t rsa -C 'Solaris SVC Monitor User' -b 2048
Generando pareja de claves pública/privada rsa.
Escriba el archivo en el que se debe guardar la clave (/export/home/svcmon/.ssh/id_rsa):
Escriba una frase de contraseña (si está vacío se interpreta que no hay ninguna frase de contraseña):
Escriba la misma frase de contraseña de nuevo:
Se ha guardado su identificación en /export/home/svcmon/.ssh/id_rsa.
Se ha guardado su clave pública en /export/home/svcmon/.ssh/id_rsa.pub.
La huella de la clave es:
32:ef:25:68:8f:47:8a:88:18:35:63:43:02:ed:e4:c4 Solaris SVC Monitor User
Ahora en nuestra máquina Nagios vamos a generar las claves RSA de SSH para que podamos conectarnos sin utilizar la contraseña. Para ello, debemos logearnos con el usuario que está corriendo el nagios <NagiosUser> y ejecutar <ssh-keygen>. En nuestro ejemplo, el usuario es <nagios>
nagios@nagios-server:~> ssh-keygen -t rsa -b 2048 -C 'Nagios User'
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nagios/.ssh/id_rsa):
Created directory '/home/nagios/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/nagios/.ssh/id_rsa.
Your public key has been saved in /home/nagios/.ssh/id_rsa.pub.
The key fingerprint is:
5d:c1:d5:49:c2:a5:28:c0:d4:22:82:61:a5:c8:d0:9f Nagios User

Ahora que ya tenemos generadas las claves ssh, vamos a copiar el contenido del archivo $HOME/.ssh/id_rsa.pub -es decir la clave pública- al host que queremos permitir el acceso sin contraseña -en nuestro caso Zion- y copiarla en el archivo $HOME/.ssh/authorized_keys, vamos a verlo

En el servidor Nagios
nagios@nagios-server:~> cat .ssh/id_rsa.pub
ssh-rsa ... bi7MMuhhNmQAgIyP9lWFS14UzKOgtIw== Nagios User

En el host a monitorizar
svcmon@zion:~ > cd ~/.ssh/
svcmon@zion:~/.ssh > vi authorized_keys
   ssh-rsa ... bi7MMuhhNmQAgIyP9lWFS14UzKOgtIw== Nagios User


:wq
Y comprobamos que podemos acceder sin password desde <nagios-server> a <zion>
nagios@nagios-server:~> ssh svcmon@zion
The authenticity of host '10.55.21.31 (10.55.21.31)' can't be established.
RSA key fingerprint is 93:18:d8:86:6b:56:d1:90:bc:5b:f7:1c:73:72:df:b7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.55.21.31' (RSA) to the list of known hosts.
Last login: Wed Mar 31 12:02:00 2010 from logos
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
svcmon@zion $ exit
logout
Connection to 10.55.21.31 closed.
Instalación del PlugIn en Nagios
Ahora que ya tenemos preparada nuestra estructura de usuarios, vamos dar de alta el servicio en nuestro servidor nagios. Para ello, he creado una versión modificada que nos permite hacer un check remotamente de un servicio SMF de Solaris 10 y la deberemos copiar en <$NAGIOS_HOME/libexec>. Su funcionamiento es el siguiente
check_svc_remote <service_name> <hostname> [username]

Para ello, descargamos el archivo con <wget> y, si por algún motivo el script <check_svc> de la máquina a monitorizar, no se encuentra en <HOME/scripts/check_svc>  deberemos editar la variable <REMOTE_SVC>
nagios@nagios-server:/usr/local/nagios/libexec> wget http://blog.sfchildren.com/blogger/solaris-smf-nagios/check_svc_remote

nagios@nagios-server:/usr/local/nagios/libexec> ./check_svc_remote
Usage: ./check_svc_remote {service_name} {hostname} [username]

        For example to test NTP Service try

                $ ./check_svc_remote svc:/network/ntp:default test.sfchildren.com
                CRITICAL svc:/network/ntp:default is disabled

        If you want, you can send SSH Banner (FD 2) to /dev/null, i.e.

                $ ./check_svc_remote svc:/network/ntp:default test.sfchildren.com 2>/dev/null
                CRITICAL svc:/network/ntp:default is disabled

        For more documentation, please go to
                http://sparcki.blogspot.com/2010/03/monitorizar-servicios-solaris-10-nagios.html

nagios@nagios-server:/usr/local/nagios/libexec> ./check_svc_remote ntp zion
OK ntp is online
nagios@nagios-server:/usr/local/nagios/libexec> ./check_svc_remote ntp logos
CRITICAL ntp is disabled
Conclusión
Aunque es un proceso un poco tedioso -sobre todo cuando instalamos por primera vez la máquina- luego resulta de gran utilidad. Esta versión es un ejemplo de lo que podemos conseguir con nagios ya que, podemos ampliar las funcionalidades, por ejemplo, si el servicio está en OFFLINE podemos decirle a nagios que haga un restart del servicio -para ello, debemos darle permisos mediante un rol al usuario <svcmon>-

También, no hemos hablado sobre cómo se debe configurar nagios ya que para eso tengo en la recámara Cómo crear un sistema de monitorización con Solaris 10, ... pero hasta entonces ... toca esperar.



Referencias

No hay comentarios:

Publicar un comentario en la entrada