Configurar monitorización con Nagios3 en Debian Jessie

Nagios es una herramienta de código libre enfocada a la monitorización automática y continúa del hardware y software de los sistemas que componen una red. Entre sus posibilidades de monitorización están hosts como servidores, equipos domésticos, switches, routers, impresoras… o servicios como SSH, SQL, HTTP, IMAP… pasando por el seguimiento de otros aspectos como el espacio en disco o la carga del sistema.
Además de ser multiplataforma, cuenta con plugins para ampliar la monitorización a otras plataformas y servicios, interfaz web, envío de notificaciones, log de eventos…
Otro de los paquetes de Nagios es NRPE, un paquete que es instalado y ejecutado en segundo plano en otros equipos para monitorizar métricas. Es el daemon que recibe las peticiones de ejecución de comandos mandadas por el plugin check_nrpe.
El escenario del que partimos es que el utilizaré durante todo el curso en el módulo Seguridad y Alta Disponibilidad de 2º ASIR. Se trata de, en un principio, tres máquinas nombradas con personajes de la Warner Bros virtualizadas en el cloud privado del IES Gonzalo Nazareno.
- Piolin: Debian Jessie 8.2 / IP flotante: 172.22.203.47 / IP interna: 10.0.0.9
- Silvestre: Ubuntu 14.04 / IP flotante: 172.22.203.48 / IP interna: 10.0.0.10
- Taz: CentOS 7.1 / IP flotante: 172.22.203.49 / IP interna: 10.0.0.11
Instalación del servidor de monitorización Nagios3
Piolin será el equipo que monitorizará al resto de hosts de nuestra red, así pues, instalamos el paquete nagios3 con apt-get install nagios3
.
Tras definir una contraseña para la administración de Nagios y comprobar que podemos acceder a su interfaz web mediante: http://IPpiolin/nagios3, hacemos una copia del fichero de configuración de los hosts. El fichero de configuración que viene creado por defecto es localhost_nagios2.cfg, ubicado en /etc/nagios3/conf.d.
Nuestro nuevo fichero tendrá por nombre nodos_cloud.cfg mientras que al anterior le cambiamos la extensión por .BKcfg. En el nuevo fichero, con privilegios de root, reemplazamos todas las referencias de localhost por piolin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# A simple configuration file for monitoring the local host # This can serve as an example for configuring other servers; # Custom services specific to this host are added here, but services # defined in nagios2-commom_services.cfg may also apply. # define host{ use generic-host ; Name of host template to use host_name piolin alias piolin address 127.0.0.1 } define host{ use generic-host ; Name of host template to use host_name silvestre alias silvestre address 10.0.0.10 } define host{ use generic-host ; Name of host template to use host_name taz alias taz address 10.0.0.11 } |
A continuación, reiniciamos el servicio con la instrucción: systemctl restart nagios3.service
.
Instalación del plugin NRPE de Nagios
Como he comentado, NRPE corresponde a las siglas Nagios Remote Plugin Executor y es un paquete que recibe las instrucciones de check_nrpe.
Tanto en las máquinas piolin como silvestre la instalación la realizamos con: apt-get install nagios-nrpe-server
.
En taz (CentOS 7.1), lo hacemos añadiendo un repositorio de Fedora con rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
e instalamos NRPE con la ejecución de yum install nrpe.x86_64
.
Admitir la monitorización remota de piolin
En silvestre y en taz editamos el fichero /etc/nagios/nrpe.cfg y en la sección ALLOWED HOST ADDRESSES reemplazamos allowed_hosts=10.0.0.10
por allowed_host=127.0.0.1,10.0.0.9
. También modificamos el parámetro dont_blame_nrpe
cambiando su valor 0
por 1
.
De esta manera permitimos el monitoreo a través de la dirección IP 10.0.0.9 y permitimos que se reciban argumentos en los comandos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# ALLOWED HOST ADDRESSES # This is an optional comma-delimited list of IP address or hostnames # that are allowed to talk to the NRPE daemon. Network addresses with a bit mask # (i.e. 192.168.1.0/24) are also supported. Hostname wildcards are not currently # supported. # # Note: The daemon only does rudimentary checking of the client's IP # address. I would highly recommend adding entries in your /etc/hosts.allow # file to allow only the specified host to connect to the port # you are running this daemon on. # # NOTE: This option is ignored if NRPE is running under either inetd or xinetd allowed_hosts=127.0.0.1,10.0.0.9 dont_blame_nrpe=1 |
Reiniciamos el servicio del plugin con service nagios-nrpe-server restart
en silvestre y service nrpe restart
en taz.
Configuración de la monitorización con Nagios3
Las configuraciones para la monitorización mediante Nagios3 se realizan en la máquina servidor, en este caso piolin. En él estableceremos la monitorización del servicio SSH, así como la carga de las máquinas silvestre y taz.
Para monitorizar el servicio SSH, debemos editar el fichero /etc/nagios3/conf.d/hostgroups_nagios2.cfg y, al final del archivo, modificar los miembros del grupo ssh-servers.
1 2 3 4 5 6 |
# A list of your ssh-accessible servers define hostgroup { hostgroup_name ssh-servers alias SSH servers members piolin, silvestre, taz } |
En el fichero de configuración nodos_cloud.cfg tenemos la plantilla de configuración para la monitorización del espacio en disco, el número de usuarios conectados, el número de procesos o la carga del sistema.
En el directorio de Nagios podemos crear tantos ficheros de configuración como nos haga falta, pudiendo dividir cada fichero según el tipo o grupo de hosts que se monitoree. En vista a ello, crearemos un nuevo archivo llamado carga.cfg y cortaremos la parte del nodos_cloud.cfg en la que se define los distintos elementos a monitorizar. En cada host_name, donde pone piolin, añadiremos silvestre y taz de tal manera que el fichero quede así:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# Define a service to check the disk space of the root partition # on the local machine. Warning if < 20% free, critical if # < 10% free space on partition. define service{ use generic-service ; Name of service template to use host_name piolin, silvestre, taz service_description Disk Space check_command check_all_disks!20%!10% } # Define a service to check the number of currently logged in # users on the local machine. Warning if > 20 users, critical # if > 50 users. define service{ use generic-service ; Name of service template to use host_name piolin, silvestre, taz service_description Current Users check_command check_users!20!50 } # Define a service to check the number of currently running procs # on the local machine. Warning if > 250 processes, critical if # > 400 processes. define service{ use generic-service ; Name of service template to use host_name piolin, silvestre, taz service_description Total Processes check_command check_procs!250!400 } # Define a service to check the load on the local machine. define service{ use generic-service ; Name of service template to use host_name piolin, silvestre, taz service_description Current Load check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0 } |
Si reiniciamos el servicio, en la página Services de la interfaz web de Nagios observaremos que se han añadido nuevos servicios para monitorear e información sobre estos.
Añadir un usuario para el acceso y visualización a través del panel de Nagios
Otro de los requisitos es añadir al usuario profesor, que ya está creado y configurado para su acceso al sistema, para que pueda acceder al panel web de Nagios. Para añadirlo ejecutamos la orden: htpasswd /etc/nagios3/htpasswd.user profesor
.
De esta manera podría acceder a la interfaz web, pero no podría ver datos en ella.
Así pues, en el fichero /etc/nagios3/cgi.cfg agregamos el usuario con permisos de lectura añadiendo el usuario profesor en los campos authorized_for_all_services
y authorized_for_all_hosts
de la sección GLOBAL HOST/SERVICE VIEW ACCESS
.
1 2 3 4 5 6 7 8 9 10 |
# GLOBAL HOST/SERVICE VIEW ACCESS # These two options are comma-delimited lists of all usernames that # can view information for all hosts and services that are being # monitored. By default, users can only view information # for hosts or services that they are contacts for (unless you # you choose to not use authorization). You may use an asterisk (*) # to authorize any user who has authenticated to the web server. authorized_for_all_services=nagiosadmin,profesor authorized_for_all_hosts=nagiosadmin,profesor |
Con la finalización de estos cambios en los ficheros de configuración, reiniciamos el servicio nagios nuevamente con la instrucción: systemctl restart nagios3.service
.