En nuestro artículo reciente, mostramos cómo instalar Nagios Core en Debian 9 para monitorear los servicios de algunos hosts remotos. Para hacerlo, deberá instalar el demonio y los complementos de Nagios NRPE en los hosts remotos. Es un paquete que se instalará en todos los hosts remotos que necesitan ser monitoreados.
NRPE (Ejecutor remoto de complementos de Nagios) es un complemento que le permite ejecutar de forma remota complementos de Nagios en máquinas Linux remotas. Le permite monitorear métricas de máquinas remotas (uso del disco, carga de la CPU, etc.). También puede comunicarse con algunos complementos de agentes de Windows como NSClient++, por lo que también puede ejecutar scripts y verificar métricas en hosts remotos de Windows. En este artículo, le explicaré cómo puede monitorear sus servidores host Linux y Windows con Nagios.
¿Cómo funciona NRPE?
NRPE es un agente y protocolo de monitoreo que a menudo se usa para monitorear hosts remotos con Nagios. NRPE trabaja con:
- un cliente (complemento check_nrpe) que se ejecuta en el servidor Nagios
- un demonio que se ejecuta en el servidor remoto, procesa las solicitudes del cliente y devuelve información de estado.
Podemos resumir el proceso por el siguiente esquema
Nagios Server (check_nrpe)-> Remote host (NRPE deamon)-> service_to_check
Nagios Server (check_nrpe) <-Remote host (NRPE deamon) <-service_to_check
Cuando Nagios necesita monitorear un recurso de servicio desde una máquina remota:
- Nagios ejecutará el check_nrpe complemento e indíquele qué servicios deben verificarse
- El check_nrpe el complemento contacta al demonio NRPE en el host remoto
- El demonio NRPE ejecuta el complemento de Nagios adecuado para verificar el servicio o recurso
- Los resultados de la comprobación del servicio pasan del daemon NRPE al check_nrpe complemento, que luego devuelve los resultados de la verificación al proceso de Nagios.
NRPE se puede configurar para aceptar solo conexiones desde una dirección IP específica. Simplemente puede decirle qué comandos ejecutar a través de la conexión. Solo se permitirán los comandos que el host local haya configurado y usted puede determinar si Nagios enviará los argumentos.
1) Agregar un host Linux en el servidor nagios
Para usar el complemento NRPE, deberá realizar algunas tareas tanto en el servidor Nagios como en el host Linux remoto donde está instalado el demonio NRPE. En nuestro caso, el host Linux remoto es un servidor Debian 9. Mostraré los puntos específicos del procedimiento para servidores Centos y Ubuntu.
a) Configurar el host Linux remoto
Necesitamos instalar los complementos de nagios y NRPE en el servidor remoto para monitorear.
Instalar el complemento de nagios
Primero necesitamos instalar los requisitos previos
# apt install -y autoconf gcc libc6 libmcrypt-dev make libssl-dev wget bc gawk dc build-essential snmp libnet-snmp-perl gettext
En Centos 7, instale los requisitos previos como se indica a continuación
# yum install -y gcc glibc glibc-common make gettext automake autoconf wget openssl-devel net-snmp net-snmp-utils epel-release perl-Net-SNMP
Ahora crearemos nuestro directorio de trabajo en /opt
directorio donde descargaremos los plugins
# mkdir /opt/nagios && cd /opt/nagios
# wget --no-check-certificate -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/archive/release-2.2.1.tar.gz
# tar zxf nagios-plugins.tar.gz
# cd nagios-plugins-release-2.2.1
Ahora compilaremos e instalaremos los complementos
# ./tools/setup
# ./configure
# make
# make install
Instalar el complemento nrpe
Ahora podemos descargar la última versión de nrpe que es complemento nrpe 3.2.0 cuando estoy escribiendo este artículo.
# cd /opt/nagios/
# wget --no-check-certificate -O nrpe.tar.gz https://github.com/NagiosEnterprises/nrpe/archive/nrpe-3.2.0.tar.gz
# cd nrpe-nrpe-3.2.0
# tar xzf nrpe.tar.gz && cd nrpe-nrpe-3.2.0
Ahora lo compilaremos
# ./configure --enable-command-args
# make all
Para Ubuntu, el comando de compilación es
# ./configure --enable-command-args --with-ssl-lib=/usr/lib/x86_64-linux-gnu/
# make all
También necesitaremos crear un usuario y un grupo de nagios en el host remoto de Linux
# make install-groups-users
Instalaremos los archivos binarios, el NRPE demonio, el check_nrpe plugin y los archivos de configuración
# make install && make install-config
Ahora mapearemos el número de puerto nrpe (5666) a un servicio con nombre
# echo >> /etc/services
# echo '# Nagios services' >> /etc/services
# echo 'nrpe 5666/tcp' >> /etc/services
Instalaremos los servicios y nos aseguraremos de iniciar nrpe cuando se inicie el sistema
# make install-init && systemctl enable nrpe.service
Configurar el cortafuegos
Ahora es importante configurar el firewall para aceptar todas las comunicaciones nrpe
# iptables -I INPUT -p tcp --destination-port 5666 -j ACCEPT
Instalaremos iptables -persistente que se hace cargo de la carga automática de las reglas de iptables guardadas. Para ello se deben guardar las reglas en el archivo /etc/iptables/rules.v4
# apt install -y iptables-persistent
Asegúrate de responder sí para guardar las reglas existentes. Normalmente puede usar iptables-save comando para guardar las nuevas reglas de iptables.
En Centos 7, configure el firewall como se muestra a continuación
# firewall-cmd --zone=public --add-port=5666/tcp
# firewall-cmd --zone=public --add-port=5666/tcp --permanent
Autorizar al servidor nagios para comunicarse con el host
Después de instalar el complemento nrpe, debemos configurar todo el host autorizado para comunicarse con el complemento nrpe en el host Linux. Significa que indicaremos la información del servidor de Nagios (dirección IP, etc.) a la que se debe llegar. El archivo /usr/local/nagios/etc/nrpe.cfg
es el que contiene todas las configuraciones de nrpe.
Encuentra la directiva allowed_hosts
y agregue la dirección IP privada de su servidor Nagios
allowed_hosts=172.16.20.128
Encuentra la directiva dont_blame_nrpe
para determinar si el demonio NRPE permitirá o no que los clientes especifiquen argumentos a los comandos que se ejecutan.
dont_blame_nrpe=1
Iniciar y probar el servicio nrpe
Para iniciar el servicio nrpe, use el siguiente comando
# systemctl start nrpe.service
Ahora, para ver si las cosas funcionan correctamente, debemos asegurarnos de que el demonio nrpe se esté ejecutando primero
# netstat -at | egrep "nrpe|5666"
tcp 0 0 0.0.0.0:nrpe 0.0.0.0:* LISTEN
tcp6 0 0 [::]:nrpe [::]:* LISTEN
Ahora podemos probar si nrpe funciona localmente ejecutando el complemento check_nrpe que fue instalado
# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v3.2.0
Debería tener el resultado anterior que indica que el complemento nrpe funciona perfectamente en el host de Linux. El archivo de configuración de NRPE que se instaló contiene varias definiciones de comandos que podemos usar para monitorear nuestro host remoto.
Ahora necesitamos configurar el servidor nagios
b) Configurar el servidor nagios para detectar el host remoto
Este artículo asume que ya instaló y configuró el servidor Nagios en Debian 9. Significa que ahora lo configurará para detectar y agregar nuestro host Linux remoto. Si aún no lo ha configurado, siga este artículo.
En el servidor de Nagios, también necesitaremos instalar el complemento nrpe y crear un archivo de configuración para el host de Linux.
Instalar complemento nrpe
El procedimiento es exactamente el mismo que en el host de Linux, pero no olvide que en el servidor de Nagios ya tenemos un usuario y un grupo de Nagios, por lo que podemos omitir ese paso. Nos moveremos a nuestro directorio de trabajo de nagios
# cd /opt/nagios
# wget --no-check-certificate -O nrpe.tar.gz https://github.com/NagiosEnterprises/nrpe/archive/nrpe-3.2.0.tar.gz
# cd nrpe-nrpe-3.2.0
Ahora lo compilaremos
# tar xzf nrpe.tar.gz && cd nrpe-nrpe-3.2.0
# ./configure --enable-command-args
# make all
Instalaremos binarios y archivos de configuración
# make install && make install-config
Tendremos que agregar el servicio nrpe también
# echo >> /etc/services
# echo '# Nagios services' >> /etc/services
# echo 'nrpe 5666/tcp' >> /etc/services
Instalaremos los servicios y nos aseguraremos de iniciar nrpe al inicio del sistema
# make install-init && systemctl enable nrpe.service
Configurar el firewall y el servicio nrpe
También configuraremos el firewall para permitir la comunicación nrpe con todos los hosts.
# iptables -I INPUT -p tcp --destination-port 5666 -j ACCEPT
# systemctl start nrpe.service
Pruebe la comunicación con el demonio nrpe del host Linux remoto
Necesitamos asegurarnos de que check_nrpe El complemento puede hablar con el demonio NRPE en el host remoto. Usaremos el check_nrpe complemento con la dirección IP del host remoto como puede ver a continuación
# /usr/local/nagios/libexec/check_nrpe -H 172.16.20.129
NRPE v3.0
Ahora usaremos una definición de comando para intentar monitorear un servicio (verificar la carga de la CPU ) en el Linux remoto.
# /usr/local/nagios/libexec/check_nrpe -H 172.16.20.129 -c check_load
CRITICAL - load average: 0.01, 0.28, 0.31|load1=0.010;0.150;0.300;0; load5=0.280;0.100;0.250;0; load15=0.310;0.050;0.200;0;
Puede ver que tenemos una respuesta del Linux remoto para monitorear. Muestra que nuestro complemento funciona perfectamente en el host remoto y la comunicación es buena.
c) Definir un nuevo Host Linux y servicios en el servidor nagios
Nagios contiene por defecto algunas definiciones de objetos en /usr/local/nagios/etc/objects
directorio en el servidor nagios que representa cada tipo de host que puede necesitar monitorear.
# ls /usr/local/nagios/etc/objects/
commands.cfg printer.cfg switch.cfg localhost.cfg timeperiods.cfg windows.cfg
contacts.cfg templates.cfg
Primero crearemos una carpeta en la que guardaremos todos los archivos de configuración del host remoto que el servidor de Nagios debe monitorear.
# mkdir /usr/local/nagios/etc/objects/servers
Nagios tiene un archivo de plantilla templates.cfg que contiene algunos ejemplos de plantillas de definiciones de objetos a las que hacen referencia otros hosts, servicios, etc. Estas definiciones serán útiles cuando creemos cada definición de archivo de host remoto.
Por defecto, Nagios monitoriza el servidor donde está instalado a través del localhost.cfg expediente. Usaremos este archivo para crear el archivo de configuración para nuestro host Linux.
# cp /usr/local/nagios/etc/objects/localhost.cfg /usr/local/nagios/etc/objects/servers/linux.cfg
Ahora editaremos nuestro archivo para agregar nuestro host.
# cd /usr/local/nagios/etc/objects/servers/
# vim linux.cfg
###############################################################################
###############################################################################
#
# HOST DEFINITION
#
###############################################################################
###############################################################################
# Define a host for the local machine
define host{
use linux-server ; Name of host template to use
; This host definition will inherit all variables that are defined
; in (or inherited by) the linux-server host template definition.
host_name debian9
alias Debian 9
address 172.16.20.129
}
###############################################################################
###############################################################################
#
# SERVICE DEFINITIONS
#
###############################################################################
###############################################################################
# Define a service to "ping" the local machine
define service{
use generic-service ; Name of service template to use
host_name debian9
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
# 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 debian9
service_description Root Partition
check_command check_local_disk!20%!10%!
}
Su archivo debe verse como algo arriba. Esta salida ha sido truncada. Tendrás más definiciones de servicios.
La directiva address
debe contener la dirección del host remoto a monitorear.
La directiva host_name
debe contener el nombre que aparecerá en su panel de nagios y debería ser indicativo para usted, así que elimine el localhost predeterminado y reemplácelo con otro nombre (debian9 es el nombre en mi caso). Debe reemplazar esa directiva cada vez que aparece en el archivo, es decir, para host y todas las definiciones de servicio.
Las definiciones de servicio presentes en el archivo son estándar. A continuación le daré tres definiciones de servicio para agregar al final del archivo para imap, ftp y smtp si necesita monitorear estos servicios en su Linux remoto.
#Checking FTP service
define service{
use generic-service ; Inherit default values from a template
host_name debian9
service_description FTP
check_command check_ftp
}
#Checking SMTP service
define service{
use generic-service ; Inherit default values from a template
host_name debian9
service_description SMTP
check_command check_smtp
}
#Checking IMAP service
define service{
use generic-service ; Inherit default values from a template
host_name debian9
service_description IMAP
check_command check_imap
}
d) Actualice el archivo de configuración de nagios y reinicie el servicio
Ahora que hemos creado un nuevo directorio para nuestros hosts remotos, debemos indicar dónde puede encontrarlo Nagios para usarlo. Entonces editará el archivo de configuración predeterminado de Nagios /usr/local/nagios/etc/nagios.cfg
vim /usr/local/etc/nagios.cfg
# OBJECT CONFIGURATION FILE(S)
# These are the object configuration files in which you define hosts,
# host groups, contacts, contact groups, services, etc.
# You can split your object definitions across several config files
# if you wish (as shown below), or keep them all in a single config file.
# 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
#cfg_file=/usr/local/nagios/etc/objects/linux.cfg
# Definitions for monitoring a Windows machine
#cfg_file=/usr/local/nagios/etc/objects/windows.cfg
# Definitions for monitoring a router/switch
#cfg_file=/usr/local/nagios/etc/objects/switch.cfg
# Definitions for monitoring a network printer
#cfg_file=/usr/local/nagios/etc/objects/printer.cfg
# You can also tell Nagios to process all config files (with a .cfg
# extension) in a particular directory by using the cfg_dir
# directive as shown below:
cfg_dir=/usr/local/nagios/etc/objects/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
Puede notar que he agregado la directiva cfg_dir=/usr/local/nagios/etc/objects/servers
que indica el directorio del nuevo host a considerar. Puede notar que la directiva cfg_file
indica los diferentes servicios y archivos de configuración de hosts utilizados por nagios.
Significa que si no creamos un directorio sino simplemente el archivo linux.cfg en el predeterminado /usr/local/nagios/etc/objects
directorio, simplemente debemos agregar la directiva cfg_file=/usr/local/nagios/etc/objects/linux.cfg
para que nagios detectara la configuración de nuestro host remoto.
Ahora debemos verificar si la configuración de nagios no contiene ningún error antes de reiniciar el servicio
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios Core 4.3.2
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2017-05-09
License: GPL
Website: https://www.nagios.org
Reading configuration data...
Read main config file okay...
Read object config files okay...
Running pre-flight check on configuration data...
Checking objects...
Checked 19 services.
Checked 2 hosts.
Checked 1 host groups.
Checked 0 service groups.
Checked 1 contacts.
Checked 1 contact groups.
Checked 17 commands.
Checked 5 time periods.
Checked 0 host escalations.
Checked 0 service escalations.
Checking for circular paths...
Checked 2 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
Puede ver que no tenemos ningún error, por lo que podemos reiniciar el servicio de nagios
# systemctl restart nagios
e) Acceso a la interfaz web de nagios
Ahora que todo está bien, podemos iniciar nuestra página de administración de nagios para ver el resultado de nuestra configuración. En su servidor local, acceda por http://localhost/nagios
Estaba accediendo en mi Linux remoto, es por eso que puede ver que indiqué la IP de mi servidor Nagios. Puedes ver que tenemos nuestro nuevo Linux remoto con sus servicios.
Todavía no hemos instalado el servicio FTP en nuestro host remoto. Es por esto que este servicio se encuentra en estado crítico.
2) Agregue un host de Windows en el servidor Nagios
Para monitorear hosts de Windows con Nagios, debe instalar NSClient++ en sus sistemas Windows remotos. NSClient++ (nscp) es un agente que debe implementarse en hosts remotos para ser monitoreado. NSClient++ permite muchas formas de comprobar su sistema:
- Obtener el estado del sistema (cpu, discos...)
- Obtener contadores de rendimiento
- Comprobar archivo de registro
- Comprobar tareas programadas, etc.
a) Configurar el host de Windows
En el host de Windows remoto, necesitamos instalar nsclient++. Puedes descargarlo desde el sitio oficial. Hemos descargado el archivo msi NSCP-0.5.0.62-x64.msi
Instalar y configurar nsclient
Inicie el proceso de instalación.
En este paso, elija Siguiente
En este paso, tome personalizado
Indique la IP del servidor de nagios y la contraseña de nagios para el acceso a la web. También pegue todo "Habilitar "opciones (comprobar complementos, check_nt, check_nrpe, servidor web, nsca cliente ) y modo seguro.
Puede instalar dejando la contraseña en blanco. No es necesario que lo indiques.
Comprobar el estado de NSClient
Ahora que está instalado, verificaremos si el servicio NSClient se inició abriendo services.msc . Ahora busque sobre nsclient y verifique su estado (debe estar En ejecución ). Verifique que el tipo de inicio esté configurado en "Automático "
Podemos ver que nuestro complemento está funcionando. Ahora podemos configurar nuestro lado del servidor nagios.
b) Configurar el servidor nagios
En el servidor Nagios, necesitamos definir nuestro nuevo host de Windows para monitorear con sus servicios.
Agregar una nueva definición de host de Windows
Agregaremos una nueva definición de host para la máquina Windows que vamos a monitorear modificando el /usr/local/nagios/etc/objects/windows.cfg
expediente. En cuanto a nuestro host Linux, copiaremos el archivo de configuración de Windows en los servidores directorio que hemos creado anteriormente.
# cp /usr/local/nagios/etc/objects/windows.cfg /usr/local/nagios/etc/objects/servers/
Normalmente ya estamos en /usr/local/nagios/etc/objects/servers/
directorio en el servidor. Así que editaremos el archivo de host de Windows.
# vim windows.cfg
###############################################################################
###############################################################################
#
# HOST DEFINITIONS
#
###############################################################################
###############################################################################
# Define a host for the Windows machine we'll be monitoring
# Change the host_name, alias, and address to fit your situation
define host{
use windows-server ; Inherit default values from a template
host_name winserver ; The name we're giving to this host
alias My Windows Server ; A longer name associated with the host
address 172.16.20.131 ; IP address of the host
}
###############################################################################
###############################################################################
#
# SERVICE DEFINITIONS
#
###############################################################################
###############################################################################
# Create a service for monitoring the version of NSCLient++ that is installed
# Change the host_name to match the name of the host you defined above
define service{
use generic-service
host_name winserver
service_description NSClient++ Version
check_command check_nt!CLIENTVERSION
}
# Create a service for monitoring the uptime of the server
# Change the host_name to match the name of the host you defined above
define service{
use generic-service
host_name winserver
service_description Uptime
check_command check_nt!UPTIME
}
Intenta tener algo como la salida anterior. Esta salida ha sido truncada. La dirección IP debe ser su dirección IP de Windows. Puede usar otro host_name valor.
En el archivo de host de Windows, de manera predeterminada, no tiene una definición de servicio para verificar el ping, por lo que puede agregar el servicio a continuación al final del archivo. Es el check_ping predeterminado. servicio presente en el archivo host de Linux.
define service{
use generic-service ; Name of service template to use
host_name winserver
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
Recuerda que hemos indicado la protección con contraseña de nagios. Cuando especificó una contraseña en el archivo de configuración de NSClient++ en la máquina con Windows, deberá modificar el check_nt existente. definición de comando para incluir la contraseña modificando commands.cfg expediente. Así que abre el archivo e investiga la línea apropiada como se muestra a continuación:
# vim /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$
}
Tendremos que cambiar la definición del comando check_nt para incluir la palabra clave "-s
Si no indica la contraseña durante la instalación de NSClient, puede omitir este paso. Si configuró la contraseña y desea cancelarla, puede editar el archivo NSClient con el bloc de notas en el símbolo del sistema como se muestra a continuación
Y comente la línea de contraseña como a continuación
En este momento, no debería necesitar indicar la contraseña en el command.cfg archivo, puede omitir este paso.
Compruebe el archivo de configuración de nagios y reinicie el servicio
Ahora que hemos terminado nuestra definición de host de Windows, ahora podemos verificar si nuestro nagios no cuenta ningún error. Debería notar que ni siquiera agregamos una directiva en el archivo de configuración principal de nagios /usr/local/nagios/etc/nagios.cfg
porque hemos editado el archivo de windows en los servidores directorio que hemos indicado anteriormente. Si no creó ese directorio, deberíamos simplemente descomentar la directiva cfg_file=/usr/local/nagios/etc/objects/windows.cfg
Ahora podemos verificar los errores del archivo
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios Core 4.3.2
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2017-05-09
License: GPL
Website: https://www.nagios.org
Reading configuration data...
Read main config file okay...
Read object config files okay...
Running pre-flight check on configuration data...
Checking objects...
Checked 27 services.
Checked 3 hosts.
Checked 1 host groups.
Checked 0 service groups.
Checked 1 contacts.
Checked 1 contact groups.
Checked 25 commands.
Checked 5 time periods.
Checked 0 host escalations.
Checked 0 service escalations.
Checking for circular paths...
Checked 3 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
Puede ver que no tenemos ningún error y se ha detectado un nuevo host. Ahora tenemos 3 anfitriones
# systemctl restart nagios
Acceso a la interfaz web de nagios
Ahora puede abrir la página del panel de nagios para ver nuestro nuevo host con sus procesos.
Puede ver que hemos agregado nuestro host de Windows.
Si observa los servicios, puede ver el check_ping que hemos añadido. No hemos lanzado el explorador, es por eso que puede ver el mensaje crítico al respecto.
Ahora tiene dos nuevos servidores agregados en su tablero de Nagios.
Conclusión
Hemos visto cómo agregar hosts Linux y Windows en el servidor Nagios implementado en Debian 9. Hemos descrito cómo instalar y configurar NRPE que es responsable de la función de supervisión. Se utiliza para monitorear máquinas Linux y Windows con Nagios. En los hosts de Windows, deberá instalar NSClient++.