martes, 15 de octubre de 2013

Usando Nagios para monitorear mediante SNMP

  Siguiendo con el tema anterior, una vez tenemos instalado el Nagios nos damos cuenta que por si solo no hace nada, debemos configurarlo y esta guía esta precisamente para ello. Antes de comenzar a agregar servicios para monitoreo, vamos a instalar un plugin llamado PNP4NAGIOS, este plugin nos permite tener a la mano gráficos de la data que produce Nagios, cabe acotar que este plugin no genera datos salvo que el check command (mas adelante hablaremos de esto) almacene información persistente de los datos que obtiene. 

 Realizaremos esto por etapas, la primera etapa es instalar el plugin PNP4NAGIOS y configurarlo, después descargaremos otro plugin llamado check_iftraffic64, el cual nos permite visualizar el consumo de ancho de banda de cada interfaz y trabaja muy bien con PNP4NAGIOS para generar gráficos en tiempo real de trafico de red. Luego les explicare de forma general como funciona Nagios y PNP4NAGIOS y procederemos al ejemplo (en este caso, vamos a monitorear un router TP-LINK flasheado con DD-WRT).

Instalando PNP4NAGIOS

Nota: Nuevamente asumiré que están en la consola de comandos de CentOS

1.- Descarga de PNP4NAGIOS

1.a- Nos vamos al directorio donde almacenamos los SRC de Nagios:

cd /usr/local/src/nagios/

1.b- Ejecutamos el siguiente comando:
     
wget http://sourceforge.net/projects/pnp4nagios/files/latest/download

2.- Instalando las dependencias de PNP4NAGIOS y check_iftraffic64

2.a- Ejecutamos el siguiente comando para instalar todas las dependencias de PNP4NAGIOS:

yum install perl rrdtool rrdtool-perl php-gd

2.b- Ejecutamos los siguientes comandos en orden:

perl -MCPAN -e shell 
tras lo cual la linea de comandos cambiara a: cpan[1]>
Dentro de esta nueva linea de comandos ejecutamos:
install Net::SNMP

esperamos a que termine de procesar y se devuelva a cpan[1]>
Ejecutamos ahora
install Net::DNS

Nota: si tienen algún problema (se queda pegada la consola después de ejecutar alguno de los "install"), vayan a /usr/share/perl/CPAN5 y dentro de esta carpeta editen el archivo Config.pm, busquen la linea que dice 'cache_metadata' => q[1] y cambien ese 1, por un 0. 

3.- Instalando PNP4NAGIOS y check_iftraffic64

3.a Descomprimimos el archivo de PNP4NAGIOS, seguimos en la carpeta donde lo descargamos así que nos toca ejecutar:

tar zxvf pnp4nagios-0.6.21.tar.gz
ahora nos pasamos al directorio donde se descomprimió
cd pnp4nagios-0.6.21

3.b Ejecutamos los siguientes comandos en orden para instalar PNP4NAGIOS:

./configure
make
make fullinstall
service httpd restart

3.c Verificamos que todo haya ido bien, para ello utilizando un navegador vamos a la pagina web http://IP-Servidor/pnp4nagios Si todo ha ido bien no veremos ningún error en esta pagina (todos los indicadores están en verde), de no ser este el caso, volver a revisar los pasos anteriores, de ser el caso entonces ejecutar:

mv /usr/local/pnp4nagios/share/install.php /usr/local/pnp4nagios/share/install.php.back

Como referencia aquí les dejo la pagina web como deberían de apreciarla:


3.d Instalamos ahora el plugin check_iftraffic64:

Nos vamos al directorio donde se almacenan los plugins
cd /usr/local/nagios/libexec/

Descargamos el check_iftraffic64.pl
wget http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=4019&cf_id=24

Cambiamos el dueño del plugin
chown nagios:nagios check_iftraffic64.pl

Cambiamos los permisos de ejecucion del plugin
chmod +x check_iftraffic64.pl


   Con lo anterior terminamos con la instalación ahora vamos a explicar un poco como funciona Nagios, como lo tenemos que configurar y comenzaremos a utilizar esto para monitorear un router TP-LINK, lo aquí explicado sirve para cualquier dispositivo que trabaje con SNMP. 

¿Qué es SNMP?

   SNMP es un protocolo que se utiliza para monitorear dispositivos por medio de la red, este protocolo permite que un servicio como Nagios, recopile información de distintos aparatos (routers, switches, firewalls, teléfonos, computadoras, radios, etc.) en tiempo real y la catalogue/muestre al personal encargado del mantenimiento de dichos aparatos, también es posible que el Nagios tome acciones preventivas basándose en parámetros previamente configurados, por ejemplo, enviar un mensaje de texto al Ingeniero encargado de la red avisandole que según los datos recopilados el router esta a punto de colapsar (por poner un ejemplo), o le muestre gráficos de estadísticas de funcionamiento. 

  Entre las cosas que podemos monitorear mediante SNMP se encuentran:
  • Estado de interfaces
  • Consumo de ancho de banda
  • Frecuencias de operación de un radio
  • Consumo de amperaje y estado de batería de un UPS
  • Numero de llamadas concurrentes en un teléfono
  • Aplicaciones en ejecución en un servidor
  • Perdida de paquetes
  • etc
  Como se aprecia SNMP es un protocolo bastante completo, lo primero que se debe realizar es revisar la documentación correspondiente al dispositivo que queremos monitorear y revisar que permita ser monitoreado mediante SNMP, si tiene una interfaz de red es muy probable que si lo permita. 

El community String y los OIDs
    
   SNMP ya va por 3 versiones, en este caso solo hablaremos de la version 2, esta versión incluye algo que se denomina Community String, es como una contraseña, se le configura al equipo que se desea monitorear y luego, si se desea obtener información de este, el dispositivo que la solicita (ejemplo un servidor corriendo Nagios), debe utilizar esa misma "contraseña" para obtener la data, de lo contrario se le niega. 

   Los OIDs, son Identificadores de Objetos, OID significa, Object Identifier, un objeto en SNMP puede ser un servicio, una interfaz, el estado de una batería, etc. Luego de activar SNMP en el equipo que queremos monitorear y colocarle un community string, tocara hacer un "snmp walk" que no es otra cosa mas que hacer un listado de todos los OIDs que ese dispositivo en particular posee. Leer una lista de OIDs de un dispositivo recién empezando puede ser extremadamente confuso, lo importante es ir con calma y utilizando la lógica, los nombres si bien son abstractos, suelen tener un sentido lógico como veremos mas adelante. 

viernes, 11 de octubre de 2013

Instalación de Nagios Core y sus Plugins


Nagios es a día de hoy un software extremadamente poderoso y útil para monitorear equipos y servicios, ya sean routers, switches, firewalls, teléfonos, etc. Inclusive se puede monitorear servicios en ejecución en un equipo. 

Nagios trabaja principalmente con el protocolo SNMP, si quieren saber un poco mas sobre Nagios sugiero leer la documentación en su pagina web: http://www.nagios.org/

Este post es únicamente para ayudar a instalar el software como tal en 8 sencillos pasos, en la distribución CentOS. 

Nagios viene en varios sabores, sin embargo el que nos interesa es el gratuito (Nagios-Core), ¿cual es la diferencia con los pagos? Pues sencillamente que el gratuito no tiene los denominados "Wizards de instalación" que hacen la vida tan fácil para cualquiera que no sepa de Linux o no este interesado en leer la documentación. Al final de este post encontraran un enlace para descargar un script que utilizo para instalar Nagios en sistemas nuevos, antes de ejecutarlo, lean lo que dice en el código fuente

Para esta instalación asumiremos que están en una consola, crearemos una carpeta donde almacenaremos todo lo necesario para instalar Nagios y procederemos desde ahí. Primero nos loggeamos como admin si es que ya no lo somos con el comando su


1.- Creación de la carpeta donde almacenaremos el SRC de Nagios

   Vamos a utilizar el directorio /usr/local/src/, dentro de este directorio creamos una carpeta que se llame nagios: mkdir /usr/local/src/nagios
    
     Ahora nos metemos en dicha carpeta con cd /usr/local/src/nagios/

2.- Descarga de dependencias

    Tendremos que descarga unos cuantos paquetes antes de poder proceder, ejecutamos el siguiente comando para descargar todas las dependencias:

yum install -y make httpd perl php gcc glibc glibc-common gd gd-devel net-snmp-utils wget gcc-c++


    Esto se tardara algo de tiempo dependiendo de la velocidad de la conexión que tengan. 

3.- Descarga de los SRC

   Vamos a necesitar dos cosas para instalar Nagios y tenerlo funcional en nuestro sistema, en primera instancia necesitamos el núcleo de Nagios (Nagios-Core), el cual actualmente esta en su versión 4.0.0, para descargarlo ejecutamos desde la consola:

    wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.0.0.tar.gz

   También podemos chequear desde la pagina web de nagios si existe otra versión mas reciente, en cuyo caso cambiamos el numero de la versión del comando anterior (donde esta 4.0.0) por los encontrados en esta pagina: http://www.nagios.org/download/core/thanks?t=1381522100

   Luego de tener eso, tenemos que descargar los plugins o de lo contrario no podremos hacer nada con Nagios, los plugins, actualmente la versión 1.5, podemos descargarlos utilizando:

    wget https://www.nagios-plugins.org/download/nagios-plugins-1.5.tar.gz 

   Al igual que el caso anterior podemos revisar si existe una version mas reciente de los plugins desde la pagina web: http://www.nagios.org/download/plugins en cuyo caso substituimos el "1.5" por la versión que aparezca ahí. 

4.- Descompresion de los SRC

   Los archivos SRC vienen comprimidos, por ende debemos primero descomprimirlos, para ello utilizamos los siguientes comandos:

    tar zxvf nagios-4.0.0.tar.gz
    tar zxvf nagios-plugins-1.5.tar.gz

   Recordando que si descargamos otra versión, debemos substituir 4.0.0 y 1.5 por las versiones utilizadas.

   Veremos un montón de información en la pantalla, cuando termine podremos observar en el directorio (ejecutando ls) dos carpetas adicionales:

nagios: directorio donde esta el código fuente del Nagios-Core
nagios-plugins-1.5: directorio donde esta el código fuente de los plugins

5.- Creación del usuario y grupo para la ejecución de Nagios

   Tenemos que crear el usuario nagios:
       useradd nagios

   y el grupo nagcmd
      groupadd nagcmd

   Ahora introducimos los usuarios apache y nagios al grupo nagcmd:
      usermod -aG nagcmd nagios
      usermod -aG nagcmd apache

6.- Compilando Nagios-Core y Nagios-Plugins

6.a Nagios-Core
   Nos metemos en el directorio de nagios: cd nagios
   Tenemos que ejecutar el configure, y luego make para instalar, los comandos en orden son:

      ./configure --with-command-group=nagcmd 
      make all 
      make install 
      make install-init 
      make install-config 
      make install-commandmode 
      make install-webconf

    Luego nos salimos de ese directorio (cd ..)

6.b Nagios-plugins
   Nos metemos en el directorio de nagios-plugins: cd nagios-plugins-1.5
   Y ahora ejecutamos el configure al igual que el caso anterior, después make:

       ./configure --with-nagios-user=nagios --with-nagios-group=nagios
       make 
       make install

7.- Creación de cuenta de administración WEB

   Necesitamos esta cuenta para poder acceder a la interfaz Web de nagios, para crearla ejecutamos:

    htpasswd -bc /usr/local/nagios/etc/htpasswd.users nombreUsuario Contraseña

   Donde nombreUsuario y Contraseña, son el nombre de la cuenta y la contraseña de esta respectivamente. Luego de esto para que los cambios tengan efecto reiniciamos el servicio httpd:

    service httpd restart

8.- Añadir permisos de SELinux

   Si nos saltamos este paso, podremos ingresar a la interfaz web de nagios, pero todas las pestañas nos arrojaran un "Error Interno". Ejecutamos:

    chcon -R -t httpd_sys_content_t /usr/local/nagios

   Si todo esto ha ido bien basta con iniciar nagios con service nagios start y luego acceder a la interfaz web por medio de un navegador, desde la maquina que corre nagios por medio de http://localhost/nagios o desde una maquina externa por medio de http://IPserverNagios/nagios Si existe algun error al intentar acceder desde otro equipo, desactiven el servicio iptables: service iptables stop, o mejor aun añadan una regla para permitir el trafico web hasta el servidor:

   iptables -I INPUT 5 -s 0/0 -p tcp --dport 80 -j ACCEPT

   Por defecto CentOS bloquea todo el trafico que no establezca primeramente el servidor con el cliente, así que es buena idea añadir la regla anterior. 

Script para la instalación automática

   Como les comente arriba este script lo utilizo yo para instalar el Nagios de forma automática, no me hago responsable por su uso, les sugiero leer lo que dice el código fuente. Para ejecutarlo, descarguenlo y luego ejecuten desde una consola: chmod +x script-nagios.sh ya estando ubicados en el directorio donde lo descargaron, luego de esto ejecuten:
./script-nagios.sh versionDelCore versionPlugins

   En este caso versionDelCore es 4.0.0 y versionPlugins es 1.5


Al final de todo esto deberían ver lo siguiente al acceder desde un navegador:



En otro post les hablare sobre como podemos empezar a monitorear equipos y servicios.