En este artículo veremos cómo instalar Nagios Core en Fedora 35, 34 y 33 paso a paso, tanto Nagios Core, como los plugins de Nagios, el plugin NRPE y el servicio NRPE, de modo que puedas monitorizar distintos servicios en sistemas, servidores o VPS Fedora.
Contenido
Antes de instalar Nagios Core en Fedora 35
Para poder completar esta guía de instalación de Nagios Core en Fedora 35 necesitarás cumplir los siguientes requisitos mínimos:
- Una máquina Fedora 35, 34 ó 33 actualizada que actuará como servidor Nagios Core.
- Servicio web con PHP.
- Acceso a consola con un usuario con permisos de sudo, o el mismo root.
- Conexión a Internet.
También necesitaremos algunas herramientas del sistema que obtendremos desde los repositorios de Fedora 35, para lo que actualizamos las listas de paquetes:
~$ sudo yum update
E instalamos los paquetes necesarios:
~$ sudo yum install -y tar wget
Opcionalmente sería interesante disponer de otras máquinas Fedora 35 que actúen como máquinas remotas para ser supervisadas desde el servidor Nagios.
En este tutorial trabajaremos con dos máquinas:
- Un servidor Fedora 35 que actuará como servidor Nagios Core, accesible con el nombre DNS fedora.local.lan.
- Una máquina remota Fedora 35 que será supervisada, cuyo nombre DNS es fedora352.local.lan.
Cómo instalar los plugins de Nagios en Fedora 35
Vamos a descargar, compilar e instalar los plugins de Nagios en Fedora 35, tanto en el servidor Nagios Core como en las máquinas remotas.
Esta sección es común para todas las máquinas Fedora 35, tanto para el servidor Nagios Core como para las máquinas remotas, por lo tanto repetiremos los mismos pasos en cada una de ellas
Cómo descargar los plugins de Nagios para Fedora 35
Vamos a descargar los plugins de Nagios para Fedora 35 desde el sitio web de desarrollo de los mismos, donde encontraremos la última versión estable disponible:
Encontraremos un paquete en formato .tar.gz que podemos descargar desde el navegador o, como haremos en este tutorial, desde consola con el comando wget:
~$ wget -q https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.0/nagios-plugins-2.4.0.tar.gz
Cómo compilar e instalar los plugins de Nagios en Fedora 35
Vamos a instalar los requerimientos y dependencias para poder compilar los plugins de Nagios desde los repositorios de Fedora 35, requerimientos que son básicamente herramientas, comandos y librerías de desarrollo utilizadas para crear los plugins:
~$ sudo yum install -y gcc make bind-utils fping net-snmp-utils qstat rpcbind samba-client freeradius-client-devel krb5-devel libdbi-devel libpq-devel mariadb-devel openldap-devel openssl-devel perl-CPAN perl-Net-SNMP perl-Crypt-X509 perl-Text-Glob
Instalamos algún módulo de Perl para el que no hay paquetes con la herramienta cpan:
~$ sudo cpan -i LWP::Simple
Si es la primera vez que ejecutamos cpan, la herramienta nos preguntará si deseamos que se autoconfigure (lo cual es lo deseable):
... Would you like to configure as much as possible automatically? [yes]
Descomprimimos el paquete de los plugins que acabamos de descargar:
~$ tar xf nagios-plugins-2.4.0.tar.gz
Cambiamos el directorio de trabajo al subdirectorio que se acaba de crear:
~$ cd nagios-plugins-2.4.0
Configuramos la compilación con los requerimientos presentes en el sistema:
$ ./configure
Compilamos:
$ make
E instalamos los plugins:
$ sudo make install
Ya podemos salir del subdirectorio del código fuente:
$ cd ..
Y eliminarlo:
~$ sudo rm -rf nagios-plugins-2.4.0
Ahora tenemos un directorio /usr/local/nagios/libexec/ en el que se guardan todos los plugins que hemos podido compilar (la cantidad de plugins disponible dependerá de las dependencias satisfechas):
~$ ls /usr/local/nagios/libexec/ check_apt check_icmp check_nt check_ssh check_breeze check_ide_smart check_ntp check_ssl_validity check_by_ssh check_ifoperstatus check_ntp_peer check_ssmtp check_clamd check_ifstatus check_ntp_time check_swap check_cluster check_imap check_nwstat check_tcp check_dbi check_ircd check_oracle check_time check_dhcp check_jabber check_overcr check_udp check_dig check_ldap check_pgsql check_ups check_disk check_ldaps check_ping check_uptime check_disk_smb check_load check_pop check_users check_dns check_log check_procs check_wave check_dummy check_mailq check_radius negate check_file_age check_mrtg check_real remove_perfdata check_flexlm check_mrtgtraf check_rpc urlize check_fping check_mysql check_sensors utils.pm check_ftp check_mysql_query check_simap utils.sh check_game check_nagios check_smtp check_hpjd check_nntp check_snmp check_http check_nntps check_spop
Todos los comandos que empiezan por check_ son binarios que podemos ejecutar perfectamente desde consola si sabemos qué parámetros necesitan. Por ejemplo, si ejecutamos el plugin check_users sin parámetros obtendremos información sobre su uso:
~$ /usr/local/nagios/libexec/check_users Usage: check_users -w <users> -c <users>
El parámetro -w indicaría el número de usuarios en el sistema que consideraríamos como alarmante, mientras que el parámetro -c sería la cantidad crítica. Por ejemplo, podemos especificar un número alarmante de 5 usuarios y un número crítico de 10:
~$ /usr/local/nagios/libexec/check_users -w 5 -c 10 USERS OK - 1 users currently logged in |users=1;5;10;0
El plugin devuelve OK como estado, ya que el número de usuarios con sesión iniciada es 1, menor que el umbral de alarma.
Otro ejemplo, que en este caso no necesita parámetros, puede ser el plugin check_uptime:
~$ /usr/local/nagios/libexec/check_uptime Uptime OK: 0 day(s) 0 hour(s) 51 minute(s) | uptime=51.000000;;;
Siéntete libre de explorar el funcionamiento de los plugins disponibles. Si echas en falta alguno es porque probablemente no se cumplía alguna dependencia, por lo que habría que instalarla e iniciar de nuevo el proceso de compilación e instalación.
Cómo descargar, compilar e instalar Nagios Core en Fedora 35
Ahora vamos a ver cómo instalar el servidor Nagios Core en Fedora 35, de modo que dispongamos del servicio encargado de recopilar información de las máquinas remotas y de sí misma, ya que hemos instalado también los plugins en la máquina que actuará como servidor.
Este paso sólo lo realizaremos en la máquina Fedora 35 que actuará como servidor Nagios Core
Cómo descargar Nagios Core para Fedora 35
Tenemos que descargar Nagios Core para Fedora 35 desde el sitio web del proyecto, donde está disponible la última versión:
Encontraremos un paquete en formato .tar.gz que vamos a descargar también desde consola:
~$ wget -q https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.7/nagios-4.4.7.tar.gz
Cómo instalar Nagios Core en Fedora 35
Instalamos las dependencias:
~$ sudo yum install -y gd-devel libtool-ltdl-devel traceroute unzip
Descomprimimos el paquete de Nagios Core que acabamos de descargar:
~$ tar xf nagios-4.4.7.tar.gz
Cambiamos el directorio de trabajo al subdirectorio del código fuente creado en el paso anterior:
~$ cd nagios-4.4.7
Configuramos la compilación:
$ ./configure --disable-ssl
Compilamos:
$ make all
Y por fin instalamos los binarios, las configuraciones, el servicio, etc.:
$ sudo make install-groups-users install install-webconf install-config install-init install-daemoninit install-commandmode
Podemos salir del subdirectorio:
$ cd ..
Y borrarlo:
~$ sudo rm -rf nagios-4.4.7
Para que el servicio web pueda trabajar con los comandos externos de Nagios habrá que crear un contexto de lectura/escritura en el directorio donde se guardan dichos comandos:
~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/usr/local/nagios/var/rw(/.*)?"
Y aplicamos el nuevo contexto:
~$ sudo restorecon -R /usr/local/nagios/var/rw/
Recargamos la configuración del servicio web para aplicar las configuraciones de Nagios Core:
$ sudo systemctl reload httpd
Ahora disponemos de un nuevo servicio en Fedora 35, el servicio nagios.service o nagios, que no qued en ejeución ni habilitado por defecto. Lo habilitaremos para que inicie junto al sistema:
$ sudo systemctl enable nagios
Y lo arrancaremos por primera vez de forma manual, para tenerlo disponible de forma inmediata:
$ sudo systemctl start nagios
Podemos comprobar el estado del servicio con el comando systemctl status nagios
:
Será necesario crear el usuario nagiosadmin para poder acceder a la interfaz web de Nagios Core:
~$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Tendremos que crear y confirmar la contraseña correspondiente.
Acceder al servidor Nagios Core
Para acceder al servidor Nagios Core en Fedora 35 desde un navegador bastará con añadir la ruta /nagios a la dirección IP, nombre DNS, dominio o localhost (si accedemos localmente).
Por ejemplo, la máquina Fedora 35 sobre la que realizamos este tutorial es accesible en el subdominio fedora.local.lan, así que empleamos http://fedora.local.lan/nagios como URL:
Nos autenticamos con el usuario nagiosadmin y su contraseña, tal como la acabamos de crear, y accedemos a la página principal del servicio Nagios Core:
Visitamos la sección «Hosts» del panel lateral:
Aquí se mostrará la lista de máquina superviadas, donde inicialmente sólo aparece la máquina local, es decir, el propio servidor Nagios Core.
Consultamos los servicios monitorizados en la opción «Services» del panel lateral:
Y veremos detallados los servicios supervisados. Si te aparece una alarma referente al servicio web, es perfectamente normal, ya que si no se ha creado una página web la que se muestra como bienvenida por defecto en realidad es un error 403.
Cómo configurar Nagios Core en Fedora 35
Para configurar Nagios Core en Fedora 35 debemos trabajar sobre los archivos presentes en la ruta /usr/local/nagios/etc/, siendo el archivo principal nagios.cfg.
En nagios.cfg, además de asignarse valores por defecto para Nagios, se incluyen otros archivos de configuración, como los archivos commands.cfg y localhost.cfg, por ejemplo, ambos ubicados en la subcarpeta objects/:
... # You can specify individual object config files as shown below: cfg_file=/usr/local/nagios/etc/objects/commands.cfg cfg_file=/usr/local/nagios/etc/objects/contacts.cfg cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg cfg_file=/usr/local/nagios/etc/objects/templates.cfg # Definitions for monitoring the local (Linux) host cfg_file=/usr/local/nagios/etc/objects/localhost.cfg ...
El archivo commands.cfg contiene la definición de los comandos que usa Nagios Core para monitorizar los servicios. Un comando no es más que una determinada forma de usar un plugin (ya que un mismo plugin puede usarse para obtener distintas informaciones). Si echamos un vistazo al archivo commands.cfg entenderemos el funcionamiento:
... define command { command_name check-host-alive command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5 } ...
A través de un bloque de definición se le da un nombre al comando, con command_name, y la línea de comando para lanzar el plugin en consola, con command_line.
La variable $USER1$ hace referencia a la ubicación de los plugins en el sistema, en este caso /usr/local/nagios/libexec/, y $HOSTADDRESS$ es la dirección de la máquina, que se sustituirá por localhost o la dirección de una máquina remota. Además, se incluyen los parámetros necesarios para obtener la información deseada.
Podemos encontrar otros comandos más complejos, como el siguiente:
... define command { command_name check_local_disk command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ } ...
En este caso no hay variable ni parámetro de dirección de red, por lo que se ejecutará localmente, y sin embargo sí se usan variables para los distintos parámetros del plugin.
Los comandos se emplean desde archivos correspondientes a los sistemas monitorizados. Inicialmente Nagios Core sólo incluye el sistema local, definido en el archivo localhost.cfg, en el que podremos ver cómo se utilizan los comandos definidos en el archivo commands.cfg para definir a su vez los servicios monitorizados:
... define service { use local-service ; Name of service template to use host_name localhost service_description Root Partition check_command check_local_disk!20%!10%!/ } ...
Podemos ver cómo se define un servicio para monitorizar el espacio de una partición de disco, usando el comando check_local_disk que vimos anteriormente definido en el archivo commands.cfg, incluyendo los valores para los parámetros que admite dicho comando.
Puedes crear comandos personalizados con sus propios nombres y valores, añadiéndolos al archivo commands.cfg, y puedes definir nuevos servicios incluyéndolos en localhost.cfg.
Cómo descargar, compilar e instalar Nagios NRPE en Fedora 35
Es el momento de instalar Nagios NRPE en Fedora 35, aunque en esta ocasión tenemos la particularidad de que tanto el plugin (que se instala en el servidor Nagios Core) como el servicio NRPE (que se instala en la máquina remota) vienen incluidos en el mismo paquete.
Cómo descargar Nagios NRPE para Fedora 35
Vamos a descargar Nagios NRPE para Fedora 35 desde el sitio oficial del proyecto, y haremos esto tanto en el servidor Nagios Core como en las máquinas remotas:
Hay que descargar Nagios NRPE tanto en el servidor Nagios como en las máquinas remotas
Descargamos el paquete .tar.gz desde consola con wget:
~$ wget -q https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
Cómo instalar el servicio NRPE en Fedora 35
Vamos a instalar el servicio Nagios NRPE en las máquinas remotas Fedora 35, es decir, en los sistemas que van a ser monitorizados por el servidor Nagios.
Esta parte del proceso sólo la realizaremos en las máquinas remotas
Descomprimimos el archivo que acabamos de descargar:
~$ tar xf nrpe-4.0.3.tar.gz
Accedemos al nuevo subdirectorio:
~$ cd nrpe-4.0.3
Si trabajamos con Fedora 33 ó anteriores, configuramos la compilación como en versiones anteriores:
$ ./configure
Pero si trabajamos con Fedora 35 ó 34 habrá que desactivar la opción SSL:
$ ./configure --disable-ssl
Compilamos el servidor NRPE:
$ make nrpe
E instalamos binarios y configuraciones:
$ sudo make install-groups-users install-daemon install-config install-init
Podemos abandonar el subdirectorio del código fuente:
$ cd ..
Y eliminar dicho subdirectorio:
~$ sudo rm -rf nrpe-4.0.3
Cómo configurar el servicio Nagios NRPE en Fedora 35
Editamos el archivo de configuración principal:
~$ sudo nano /usr/local/nagios/etc/nrpe.cfg
Buscamos la directiva allowed_hosts:
... allowed_hosts=127.0.0.1,::1 ...
A la lista de direcciones permitidas añadiremos la de nuestro servidor Nagios Core, indicando su dirección IP o un nombre DNS que se pueda resolver:
... allowed_hosts=127.0.0.1,::1,fedora.local.lan ...
En este mismo archivo ya existen definiciones de comandos permitidos desde el servidor Nagios Core, podemos echar un vistazo:
... command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10 command[check_load]=/usr/local/nagios/libexec/check_load -r -w .15,.10,.05 -c .30,.25,.20 command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1 command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200 ...
Podemos modificar los comandos existentes, como por ejemplo el comando check_hda1, ya que el sistema de ejemplo sobre el que trabajamos en lugar de dispositivo /dev/hda1 tiene /dev/sda1, quedando así:
... command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1 ...
Puedes hacer las modificaciones que consideres necesarias, activar cualquiera de los otros comandos desactivados que se incluyen en la configuración y añadir nuevos comandos personalizados. Pero observa que en cualquier caso las definiciones de comandos sólo admiten parámetros perfectamente determinados, no es posible utilizar variables para que el servidor envíe valores para estos parámetros.
Guardados los cambios y cerrado el archivo, podemos iniciar el servicio:
~$ sudo systemctl start nrpe
Para comprobar que el servicio se encuentra en ejecución podemos lanzar el comando systemctl status nrpe
:
Si queremos que el servicio Nagios NRPE esté siempre disponible e inicie automáticamente junto a Fedora 35, lo habilitaremos:
~$ sudo systemctl enable nrpe
Configurar el firewall de Fedora 35 para Nagios NRPE
El servicio Nagios NRPE queda a la espera de peticiones en el puerto 5666/TCP, por lo que debemos añadir una regla para el firewall de Fedora 35. En luegar de usar el puerto es posible añadir el servicio:
~$ sudo firewall-cmd --permanent --add-service=nrpe
Aplicamos los cambios recargando la configuración del firewall:
~$ sudo firewall-cmd --reload
Cómo instalar el plugin NRPE en Fedora 35
Es el momento de instalar el plugin NRPE en el servidor Fedora 35 donde tenemos corriendo el servicio Nagios Core.
Este paso lo realizaremos en el servidor Nagios Core
Descomprimimos el paquete de NRPE:
~$ tar xf nrpe-4.0.3.tar.gz
Cambiamos el directorio de trabajo al subdirectorio que se acaba de crear:
~$ cd nrpe-4.0.3
En Fedora 33 y anteriores configuramos la compilación del siguiente modo:
$ ./configure
Pero en Fedora 35 ó 34 habrá que desactivar la configuración para SSL:
$ ./configure --disable-ssl
Compilamos el plugin check_nrpe:
$ make check_nrpe
Y lo instalamos:
$ sudo make install-plugin
Ya podemos abandonar el subdirectorio del código fuente:
$ cd ..
Y eliminarlo:
~$ sudo rm -rf nrpe-4.0.3
Podemos comprobar que el plugin funciona lanzándolo desde consola utilizando el parámetro -H para indicar la dirección de alguna máquina remota que tenga el servicio Nagios NRPE configurado para recibir instrucciones desde el servidor Nagios Core:
~$ /usr/local/nagios/libexec/check_nrpe -H fedora352.local.lan NRPE v4.0.3
Como prueba de funcionamiento, la máquina remota responde con la versión del servicio NRPE instalado.
Configurar una máquina remota en Nagios Core
Empezaremos editando el archivo commands.cfg de Nagios Core para crear un comando que nos permita usar el nuevo plugin check_nrpe:
~$ sudo nano /usr/local/nagios/etc/objects/commands.cfg
Al final del archivo podemos añadir la definición del comando:
... ### Comando para usar el plugin NRPE define command { command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
Guardamos los cambios y cerramos el archivo.
Ahora editamos la configuración de Nagios Core:
~$ sudo nano /usr/local/nagios/etc/nagios.cfg
Aunque no está activado por defecto, la configuración ya ha previsto un directorio para almacenar los archivos de configuración de las máquinas remotas, una subcarpeta llamada servers/:
... #cfg_dir=/usr/local/nagios/etc/servers #cfg_dir=/usr/local/nagios/etc/printers #cfg_dir=/usr/local/nagios/etc/switches #cfg_dir=/usr/local/nagios/etc/routers ...
Activamos la directiva eliminando el carácter # al inicio de línea:
... cfg_dir=/usr/local/nagios/etc/servers ...
Y guardamos y cerramos el archivo.
La carpeta servers/ en realidad no existe, así que la creamos:
~$ sudo mkdir /usr/local/nagios/etc/servers
Y dentro de la nueva carpeta creamos el archivo de configuración para la máquina remota:
~$ sudo nano /usr/local/nagios/etc/servers/fedora352.local.lan.cfg
La configuración básica constará de un bloque con los datos de la máquina remota:
define host { use linux-server host_name fedora352.local.lan alias Fedora 35 remoto address fedora352.local.lan max_check_attempts 5 check_period 24x7 notification_interval 30 notification_period 24x7 }
Podemos observar que se usa la plantilla linux-server, de detalla el nombre, alias y dirección de la máquina remota y se establecen los intentos y frecuencias de conexión.
A continuación podemos definir todos los servicios que queramos monitorizar en la máquina remota de entre los que la misma permita. En este caso usaremos el servicio de carga de CPU y el servicio check_sda1 que modificamos anteriormente:
... define service { use generic-service host_name fedora352.local.lan service_description Carga de CPU check_command check_nrpe!check_load } define service { use generic-service host_name fedora352.local.lan service_description Espacio libre en /dev/sda1 check_command check_nrpe!check_sda1 }
Una vez guardados los cambios sólo queda recargar la configuración del servicio Nagios Core para que incluya la nueva máquina remota:
~$ sudo systemctl reload nagios
De regreso a la interfaz web de Nagios Core en el servidor, si echamos un vistazo a la sección «Hosts» veremos que ahora además de la máquina local también aparece la nueva máquina remota:
Y en la sección «Services» veremos los servicios supervisados agrupados por máquinas:
Puedes repetir el proceso para supervisar tantas máquinas remotas como necesites.
Conclusión
Ahora que sabes cómo instalar y configurar Nagios Core en Fedora 35 ya puedes monitorizar los servicios de distintas máquinas Fedora 35 a través de Nagios Core y sus plugins de forma sencilla.
Si tienes dudas, preguntas, alguna sugerencia de mejora o actualización del artículo, notificación de posibles errores, etc. puedes dejar un comentario, que responderemos lo antes posible.
¡Apoya comoinstalar.me!
¿Ya has empezado a monitorizar tu red gracias a nuestra guía de instalación y configuración de Nagios Core en Fedora 35? Si es así y quieres agradecérnoslo puedes colaborar con el mantenimiento de este sitio y creación de más artículos y tutoriales sobre temas como Fedora 35 o Nagios Core.
Puedes ayudarnos dejando 1 $ de propina con PayPal:
O, si te sientes especialmente agradecido, puedes invitarnos a un café:
¡Gracias!
Actualizado a la versión 4.4.7 de Nagios Core sobre Fedora 35.
Hola.
Muy bueno el tutorial, pero al recargar al final el Nagios me da error con las lineas que se descomentaron en nagios.cfg:
cfg_dir=/usr/local/nagios/etc/servers/
cfg_dir=/usr/local/nagios/etc/printers
cfg_dir=/usr/local/nagios/etc/switches
cfg_dir=/usr/local/nagios/etc/routers
No sé si es porque estoy usando la misma PC mía para servidor y para chequear por la red o es por otra cosa…
Por si las moscas le puse el / al final de las líneas y nada, siguió con el error, solo cuando las comenté fue que no me dio más problemas.
Hola, Armando. Tu problema es que descomentas esas líneas pero luego no creas los directorios indicados. En el tutorial únicamente se descomenta la primera directiva de ese bloque y a continuación se crea el directorio. Si quieres descomentar el resto de directivas, igualmente deberías crear los directorios correspondientes.