Nagios es un sistema de monitorización de redes ampliamente utilizado, de código abierto, que vigila los equipos (hardware) y servicios (software) que se especifiquen, alertando cuando el comportamiento de los mismos no sea el deseado. Entre sus características principales figuran la monitorización de servicios de red (SMTP, POP3, HTTP, SNMP…), la monitorización de los recursos de sistemas hardware (carga del procesador, uso de los discos, memoria, estado de los puertos…), independencia de sistemas operativos, posibilidad de monitorización remota mediante túneles SSL cifrados o SSH, y la posibilidad de programar plugins específicos para nuevos sistemas.
Creación del escenario
Vamos a crear un escenario con tres máquinas a monitorizar en la cual vamos a instalar algunos servicios.
Haley
En esta máquina vamos a monitorizar el servidor ssh apt install ssh
y el gestor de base de datos mongoDB apt install mongodb
, dicha máquina va a ser donde se encuentre nagios3 apt install nagios 3
durante la instalacion nos solicitará una clave para el usuario «nagiosadmin», para después poder acceder desde la web introduciendo la [IP_Maquina]/nagios3
Berry
En esta máquina vamos a instalar una pila LAMP el cual incluye (Apache2, mysql-server, php5) apt install apache2 php5 php-pear php5-mysql mysql-server
Lewis
En esta máquina simplemente un cliente Debian de el cual después vamos a monitorizar diferentes servicios que no son necesarios instalar
Instalar plugins nagios en todas la máquinas
Vamos a instalar NRPE apt install nagios-nrpe-server nagios-nrpe-plugin nagios-plugins
en todas las máquinas, es el software que permite ejecutar remotamente los plugins de Nagios en otros equipos, lo que permite monitorizar los parámetros de la máquina remota.
Configuraciones necesarias para funcionamiento
Vamos a editar el fichero /etc/nagios/nrpe.cfg
deberemos permitir el acceso al servidor de Nagios añadiendo su IP, este proceso lo vamos a realizar en todas las máquinas, para ello en todas las máquinas añadimos la ip del servidor en la y permitimos que se reciban argumentos en los comandos
allowed_hosts=127.0.0.1,[Ip_Maquina_Nagios] dont_blame_nrpe=1
En este fichero, más abajo, vienen ya algunos plugins predefinidos al cual le cambiaremos los valores a nuestro interés, principalmente cambiaremos los valores “-w (warm)” y “-c (critical)” donde en cada línea le estaremos diciendo que si el valor de “-w” es superado nos lo indique como advertencia y si supera el valor de “–c” nos lo indique como una situación crítica. Estos son los diferentes plugins que vamos a configurar(vamos a dejar la mayoría de los que vienen por defecto:
haley
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10 command[check_sda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sd$ command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200 command[check_mongodb]=/usr/lib/nagios/plugins/check_mongodb.py -A prueba -w 100 -c 200
Lewis
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10 command[check_sda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sd$ command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200
berry
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10 command[check_sda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sd$ command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200
Y reiniciamos el servicio en todas las máquinas service nagios-nrpe-server restart
Monitorizar maquinas
Para monitorizar las máquinas de nuestra red vamos a crear el fichero “/etc/nagios3/conf.d/host.cfg
en haley
y le añadimos lo siguiente
define host{ use generic-host host_name haley alias haley address 192.168.1.84 } define host{ use generic-host u host_name berry alias berry address 192.168.1.67 parents haley } define host{ use generic-host host_name lewis alias lewis address 192.168.1.69 parents haley }
Y reiniciamos el servicio de nagios3 /etc/init.d/nagios3 restart
Observamos que nagios ya ha detectado a las maquina y esta comprobando su funcionamiento
Al pasar unos minutos comprobamos que todas las maquinas se encuentran up, accediendo a la pestaña “hosts”:
Monitorizar los servicios previamente instalados en Haley y Berry
Haley
Antes de monitorizar «mongoDB» debemos instalar y configurar algunas dependencias para su correcto funcionamiento, para realizar estos pasos debemos descargar el paquete zip apt install zip
, en el cual se instalara tanto «zip» como «unzip»
Primero instalamos los plugins necesarios, que descargaremos de la siguiente cuenta de github:
wget --no-check-certificate https://github.com/mzupan/nagios-plugin-mongodb/archive/master.zip unzip master.zip -d nagios-plugin-mongodb rm master.zip apt-get install python-dev python-pip pip install pymongo mv nagios-plugin-mongodb/check_mongodb.py /etc/nagios-plugins/config/
Y por ultimo lo drivers que también descargaremos de la siguiente cuenta de github
wget --no-check-certificate https://github.com/mongodb/mongo-python-driver/archive/master.zip unzip master.zip cd mongo-python-driver-master/ python setup.py install
Posteriormente añadimos el siguiente contenido al final del fichero /etc/nagios3/commands.cfg
define command { command_name check_mongodb command_line /etc/nagios-plugins/config/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ } define command { command_name check_mongodb_database command_line /etc/nagios-plugins/config/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -d $ARG5$ } define command { command_name check_mongodb_collection command_line /etc/nagios-plugins/config/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 /etc/nagios-plugins/config/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -r $ARG5$ } define command { command_name check_mongodb_query command_line /etc/nagios-plugins/config/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -q $ARG5$ }
Berry
Primero debemos de configurar un usuario y ponerle una contraseña y le damos permisos sobre todas las base de datos:
mysql> CREATE USER 'nagios'@'%' IDENTIFIED BY 'nagios'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'192.168.1.70' IDENTIFIED BY 'nagios'; mysql> flush privileges;
A continuación configuramos MySql para que escuche en cualquier dirección IP y eso lo modificamos en el fichero /etc/mysql/my.cnf
, descomentamos la linea bind-address
y añadimos en lugar de 127.0.0.1
esto 0.0.0.0
Por ultimo reiniciamos el servicio /etc/init.d/mysql restart
Para crear los servicios podemos hacerlo en un nuevo fichero dentro del directorio /etc/nagios3/conf.d/servicios-fisico.cfg
, que se encuentra en haley.
Vamos a añadir lo siguiente dado que debe de monitorizar tanto el servicio de apache2, como de mysql:
#################### MONITORIZACION BERRY ################### define service{ use generic-service host_name berry service_description HTTP check_command check_http } define service{ use generic-service host_name berry service_description MySql check_command check_mysql_cmdlinecred!nagios!nagios! }
Aviso vía correo electrónico
Para ello instalamos en «haley» el paquete de servidor de correo ssmtp apt install ssmtp
, el siguiente paso será configurar «ssmtp», para ello modificaremos el fichero de configuración /etc/ssmtp/ssmtp.conf
para que quede así:
# # /etc/ssmtp/ssmtp.conf # # Dirección de correo a la que serán enviadas todas las notificaciones # y una copia de los mensajes enviados root=[Correo Administrador] # El servidor al que sSMTP envía todo el correo para que lo distribuya luego # en mi caso el servidor SMTP de GMail , puede variar segun nuestro servidor mailhub=smtp.gmail.com:587 # Si se quiere cambiar la dirección desde la que se envía el correo # si no se enviará desde la dirección configurada más abajo mediante AuthUser #rewriteDomain= # El nombre (dominio) de la máquina # en mi caso, como es máquina local, localhost hostname=[Nombre_Maquina] # Permitir que los usuarios cambien el remitente en sus envíos # Si se permite, hay que estar seguro de que los usuarios del entorno no harán mal uso FromLineOverride=YES # Credenciales de la cuenta gmail que se vaya a usar AuthUser=[usuario de gmail] AuthPass=[contraseña de gmail] UseSTARTTLS=YES UseTLS=YES
Prueba funcionamiento ssmtp
Para ello enviaremos un correo a nuestra correonagios@juanluramirez.com
con un mensaje de prueba como este:
To: correonagios@juanluramirez.com From: jramirezvaquero@gmail.com Subject: Prueba a servidor correo Esto es una prueba del correo para nagios.
Para poder escribir el mensaje ejecutaremos el siguiente comando ssmtp [Correo Destinatario]
y empezamos a añadir líneas, cada vez que añadamos una presionamos Enter
y cuando queramos enviar el correo presionamos Ctrl+D
Envió correo para notificar cualquier problema
Ahora procedemos a editar el fichero /etc/nagios3/conf.d/contacts_nagios2.cfg
para que quede asi:
define contact{ contact_name root alias Root service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,r service_notification_commands notify-service-by-email host_notification_commands notify-host-by-email email correonagios@juanluramirez.com }
A continuación reiniciamos el servicio de nagios3 /etc/init.d/nagios3 restart
Ahora desde Berry vamos a parar el servicio de apache2 /etc/init.d/apache2 stop
Pasado unos minutos podemos observar que en el entorno web de nagios nos devuelve un fallo tipo critical
y pasado unos minutos más recibimos el correo
Controlar espacio disco y número de procesos zombies
Se va a controlar en lewis, por tanto añadimos un fichero que llamaremos «disco_zombies.cfg» en «haley» /etc/nagios3/conf.d/disco_zombies.cfg
define service{ use generic-service host_name lewis service_description Espacio en Disco check_command check_nrpe_1arg!check_sda1 } define service{ use generic-service host_name lewis service_description Total Procesos Zombies check_command check_nrpe_1arg!check_zombie_procs }
Y reiniciamos el servicio /etc/init.d/nagios3 restart
Controle la carga de CPU, usuarios logueados, procesos y el servicio SSH
Vamos a controlar la carga de CPU, cantidad de usuarios logueados, el número de procesos y el estado del servicio SSH en haley, para ello cremos un fichero «haley.cfg» en /etc/nagios3/conf.d/haley.cfg
#################### MONITORIZACION HALEY ################### define service{ use generic-service host_name haley service_description Numero Usuarios check_command check_nrpe_1arg!check_users } define service{ use generic-service host_name haley service_description SSH check_command check_ssh } define service{ use generic-service host_name haley service_description Carga CPU check_command check_nrpe_1arg!check_load } define service{ use generic-service host_name haley service_description Total Procesos check_command check_nrpe_1arg!check_total_procs }
Y reiniciamos el servicio /etc/init.d/nagios3 restart
Representación mapa de objetos
Aqui podemos observar la respresentacion como mapa de objetos, para ello nos dirigmos a Map
Pruebas de funcionamiento
Haley
Vamos a realizar pruebas en todas la maquinas, primero vamos a hacer la prueba de ssh
, para ello vamos a parar el proceso /etc/init.d/ssh stop
Observamos que el estado cambia a critical
y recibiremos un correo notificándonos el problema
Comprobamos el servicio el cual controla los procesos en haley, para ello vamos a modificar el fichero /etc/nagios/nrpe.cfg
y vamos a modificar la linea donde se configura los procesos y vamos a poner que salte un warning
cuando haya 50 procesos
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 50 -c 200
Y reiniciamos el servicio /etc/init.d/nagios-nrpe-server restart
A continuación comprobamos el servicio de carga de CPU para ello vamos a realizar un uptime
y observamos que lo valores que da nagios son iguales que lo que da el comando
Y por último listamos el número de usuarios conectados para comprobarlo con la salida de nagios con el comando users | wc -w
Berry
Anteriormente en la comprobación del servidor de correo paramos el servicio apache2 |
, por tanto ahora solo vamos a parar el servicio mysql /etc/init.d/mysql stop
Lewis
Vamos a hacer que nos salte un aviso cuando el disco tenga menos del 50% para eso solo debemos modificar el fichero /etc/nagios/nrpe.cfg
en lewis.
command[check_sda1]=/usr/lib/nagios/plugins/check_disk -w 50% -c 10% -p /dev/sda1
Por ultimo solo quedan comprobar los procesos «zombies» para ello ejecutamos un top
y podemos observar que no hay ninguno y si lo comparamos con lo que nos devuelve nagios por pantalla es igual
No se han encontrado comentarios