Monitorización con Nagios en Debian Jessie

Buenos días | tardes | noches, en esta entrada os hablaré de cómo instalar y configurar nagios, un sistema de monitorización, en Debian Jessie con varios clientes.

¿Qué es Nagios?

Nagios es un sistema de monitorización  de redes ampliamente utilizado que vigila los equipos y servicios que se especifiquen, alertando cuando el comportamiento de los mismos no sea el adecuado.

Instalación de Nagios en el servidor

Para comenzar la instalación de Nagios en el servidor necesitaremos instalar los siguientes paquetes:

apt-get install apache2 mysql-server php5-mysql php5 libapache2-mod-php5 php5-mcrypt php5-cgi php5-gd php5-common php5-curl

Durante la instalación nos pedirá que introduzcamos la contraseña para el usuario Root de MySQL.

Instalamos el paquete build essential:

apt-get install build-essential

Añadimos unos paquetes extras que serán necesarios para la utilización de Nagios

apt-get install libgd2-xpm-dev openssl libssl-dev xinetd apache2-utils unzip curl

Ahora creamos el usuario Nagios y el grupo con el que trabajaremos

useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios

Nos descargamos Nagios de su página principal (deberemos de introducir unos datos y despues nos dejará descargar el fichero)

Descomprimimos el archivo descargado

gzip -d nagios-4.2.3.tar.gz
tar -xvzf nagios-4.2.3.tar

Dentro de la carpeta, asignamos el usuario y el grupo anteriormente creados antes de realizar la compilación

./configure --with-nagios-group=nagios --with-command-group=nagcmd

Procedemos a compilar Nagios

make all
make install
make install-commandmode
make install-init
make install-config

Procedemos a configurar el servidor web, para ello ejecutamos el siguiente comando

/usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-available/nagios.conf

Añadimos el usuario www-data al grupo nagcmd

usermod -G nagcmd www-data

Ahora, al igual que antes, procedemos a descargar el paquete plugins de Nagioscd

Descomprimimos el archivo

gzip -d nagios-plugins-2.1.4.tar.gz
tar -xvf nagios-plugins-2.1.4.tar

Dentro de la carpeta de los plugins, ejecutamos el siguiente comando

./configure --with-nagios-user=nagios --with-nagios-group=nagios –with-openssl

Compilamos

make
make install

Cómo para poder monitorizar máquinas GNU/Linux debemos de tener el plugin NRPE, vamos a instalarlo. Cómo hemos hecho con los anteriores, procedemos a descargarnos el archivo comprimido desde su página principal o visitando esta página

Descomprimimos el archivo

gzip -d nrpe-3.0.1.tar.gz
tar -xvf nrpe-3.0.1.tar

Dentro de la carpeta de nrpe, ejecutamos el siguiente comando

./configure --enable-command-args --with-nagios-user=nagios --with-nagios-group=nagios --with-ssl=/usr/bin/openssl –with-ssl-lib=/usr/lib/x86_64-linux-gnu

Procedemos a la compilación

make all
make install
make install-xinetd
make install-daemon-config

Editamos el fichero /etc/xinetd.d/nrpe:

only_from = 127.0.0.1 <ip del servidor>

Reiniciamos el servicio

systemctl restart xinetd

Procedemos a realizar la configuración de Nagios. Primero de todo creamos un directorio en el cual ubicaremos la configuración de nuestros servidores

mkdir /usr/local/nagios/etc/servers

Modificamos el fichero de configuración de Nagios descomentando la siguiente linea

nano /usr/local/nagios/etc/nagios.cfg
cfg_dir=/usr/local/nagios/etc/servers

Ahora configuraremos los contactos editando el fichero /usr/local/nagios/etc/objects/contacts.cfg y cambiando la linea de email por nuestro correo

nano /usr/local/nagios/etc/objects/contacts.cfg

email <nuestro mail>

Procedemos a configurar el comando check_nrp, para ello editamos el fichero /usr/local/nagios/etc/objects/commands.cfg añadiendo al final del fichero

define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Ahora habilitamos los modulos rewrite y cgi de apache 2

a2enmod rewrite
a2enmod cgi

Asignamos una contraseña al usuario nagiosadmin para poder acceder a la web

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Activamos el sitio de nagios.conf (creado automaticamente)

a2ensite nagios.conf

Añadimos nagios al arranque del sistema por medio de un enlace simbólico

ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

Comprobamos la veracidad de la configuración

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Si todo está bien, nos debería de aparecer un “informe” con 0 Total Warnings y 0 Total Errors

Levantamos el servicio

/etc/init.d/nagios start

Nos saldrá que no encuentra el archivo o directorio, para arreglar este error copiamos /etc/init.d/skeleton a /etc/init.d/nagios

cp /etc/init.d/skeleton /etc/init.d/nagios

Editamos el archivo /etc/init.d/nagios y al final del fichero añadimos las siguientes lineas

#Comentamos las lineas que aparecen por defecto, estas son las que continuan (ya comentadas)
#DESC="Description of the service"
#DAEMON=/usr/sbin/daemonexecutablename
DESC="Nagios"
NAME=nagios
DAEMON=/usr/local/nagios/bin/$NAME
DAEMON_ARGS="-d /usr/local/nagios/etc/nagios.cfg"
PIDFILE=/usr/local/nagios/var/$NAME.lock

Cambiamos los permisos del fichero /etc/init.d/nagios dandole permisos de ejecución

chmod +x /etc/init.d/nagios

Levantamos el servicio

/etc/init.d/nagios start

Y ya podremos acceder a la web, la cual nos pedirá autenticación.

Procedemos a crear las plantillas de Cliente1 y Cliente2 para monitorización (deberemos crear una por cada cliente):

define host{
use linux-server
host_name Cliente1 # o cliente2
alias Cliente1 # o cliente2
address <ip cliente1> # O <ip cliente2>
}

Instalación y configuración de Nagios en los clientes

Para poder monitorizar los paquetes enviados entre los servidores y el cliente también deberemos instalar nagios “cliente” en Cliente1 y Cliente2

Para comenzar deberemos de crear un usuario llamado nagios

Useradd nagios
Passwd nagios

Nos descargamos los plugins desde la página principal y descomprimimos el archivo descargado

gzip -d nagios-plugins-2.1.4.tar.gz
tar -xvf nagios-plugins-2.1.4.tar

Instalamos el paquete build-essentials y libssl-dev

apt install build-essential libss-dev

Compilamos

export LDFLAGS=-ldl
./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-redhat-pthread-workaround
make
make install

Cambiamos propietarios de las carpetas de Nagios en Cliente1 y Cliente2

chown nagios.nagios /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios/libexec/

Procedemos a instalar NRPE en Cliente1 y Cliente2

Nos lo descargamos desde su página oficial y descomprimimos el archivo descargado

gzip -d nrpe-3.0.1.tar.gz
tar -xvf nrpe-3.0.1.tar

Compilamos

./configure
make all
make install-plugin
make install-daemon
make install-config
#Para el siguiente deberemos de tener instalado el demonio xinetd
make install-inetd

Modificamos el archivo /etc/xinetd.d/nrpe y modificamos las siguientes linea:

Disable = no
only_from = <ip del servidor>

Modificamos el archivo /etc/services añadiendo al final

nrpe 5666/tcp # NRPE

Reiniciamos el demonio xinetd

/etc/init.d/xinetd restart

Desde el servidor comprobamos conectividad yendo al directorio /usr/local/nagios/libexec y ejecutando el siguiente comando

./check_nrpe -H <ip de cliente1 o cliente2>

Nos debe de salir una respuesta parecida a la siguiente

NRPE v3.0.1

Instalación y configuración del plugin para MongoDB en Nagios

En nuestro servidor dónde tenemos instalado Nagios, nos vamos a /usr/local/nagios/libexec y nos descargamos el plugin:

wget --no-check-certificate https://github.com/mzupan/nagios-plugin-mongodb/archive/master.zip

Descomprimimos el archivo descargado

unzip nagios-plugin-mongodb-master.zip

Renombramos el directorio creado

mv nagios-plugin-mongodb-master nagios-plugin-mongodb

Cambiamos el propietario del directorio y su contenido

chown -R nagios:nagios nagios-plugin-mongodb/

Descargamos y descomprimimos el driver de python para Mongo

wget --no-check-certificate https://github.com/mongodb/mongo-python-driver/archive/master.zip
unzip mongo-python-driver-master.zip
cd mongo-python-driver-master

Instalamos setup.py

python setup.py install

En la máquina dónde tenemos mongodb instalado, configuramos el archivo /etc/mongodb.conf y editamos la siguiente linea:

bind_ip = <Ip del servidor que contiene mongo>

Reiniciamos el servicio de mongodb

/etc/init.d/mongodb restart

Comprobamos si nos funciona (debemos irnos al directorio del plugin en libexec)

./check_mongodb.py -H <ip del servidor con mongo>

Si la conexión ha sido buena, nos mostrará el siguiente mensaje

OK - Connection took 0 seconds

Añadimos los comandos al final del fichero etc/objects/commands.cfg de nagios

define command {
command_name check_mongodb
command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$
}

define command {
command_name check_mongodb_database
command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -d $ARG5$
}

define command {
command_name check_mongodb_collection
command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -d $ARG5$ -c $ARG6$
}

define command {
command_name check_mongodb_replicaset
command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -r $ARG5$
}

define command {
command_name check_mongodb_query
command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -q $ARG5$
}

Plugin para monitorizar Apache2

Nos descargamos el archivo desde la página oficial de plugins de nagios

Lo copiamos dentro de /usr/local/nagios/libexec

cp check_apachestatus.pl /usr/local/nagios/libexec

Le damos permisos de ejecución

chmod 755 check_apachestatus.pl

Editamos etc/objects/commands.cfg y agregamos al final del fichero

define command {
command_name check_apachestatus
command_line $USER1$/check_apachestatus.pl -H localhost}

Reiniciamos nagios

/etc/init.d/nagios restart

Monitorización del funcionamiento de los servicios en el servidor

Añadimos las siguientes lineas de servicios al fichero de localhost

define service{
use local-service
host_name localhost
service_description Monitorizacion Apache
check_command check_apachestatus
}

Reiniciamos nagios

/etc/init.d/nagios restart

wor1

Servicios extras para monitorizar

Comprobar el espacio en disco y los procesos zombies

En la máquina Cliente2 editamos /usr/local/nagios/etc/nrpe.cfg y añadimos/modificamos las siguientes lineas al final del fichero

command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1

command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z

Editamos el fichero /usr/local/nagios/etc/objects/linux-cliente2.cfg y añadimos al final del fichero las siguientes lineas

define service{
use generic-service
host_name Cliente2
service_description Espacio en Disco
check_command check_nrpe!check_hda1
}

define service{
use generic-service
host_name Cliente2
service_description Procesos zombies
check_command check_nrpe!check_zombie_procs
}

Reiniciamos el servicio de nagios

service nagios restart

Carga de CPU

En la máquina Cliente1 editamos /usr/local/nagios/etc/nrpe.cfg y añadimos/modificamos las siguientes lineas al final del fichero

command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20

En el fichero linux-cliente1.cfg añadimos los siguientes servicios

define service{
use generic-service
host_name Cliente1
service_description Carga de CPU
check_command check_nrpe!check_load
}

Reiniciamos el servicio de nagios

service nagios restart

Tardará un poco en cargar, ya que las máquinas deben comunicarse.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .