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
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.