Monitoreo Servidores · 6 min read · Oct 18, 2025
Monitoreo de Servidores Con Icinga En Debian Squeeze - Página 3
4 Agregando Un Servidor Remoto (server2) A Icinga
Monitorear localhost está bien, pero, por supuesto, sería aún mejor si pudiéramos monitorear todos nuestros servidores en un solo lugar. Esto es posible con Icinga, y este capítulo describe cómo podemos agregar nuestro segundo servidor Debian Squeeze (server2.example.com) a la configuración.
Para hacer esto, necesitamos instalar el servidor Nagios NRPE (Nagios Remote Plugin Executor) en server2, y el plugin Nagios NRPE en server1. El servidor NRPE escuchará en server2; server1 se conectará a él usando el plugin NRPE y pasará comandos que el servidor NRPE ejecutará en server2; este devolverá los resultados a server1.
Primero instalamos el paquete nagios-nrpe-plugin en server1:
server1:
apt-get install nagios-nrpe-pluginContraseña de administración web de Nagios: <– nagiosadmin_password
Confirmación de contraseña: <– nagiosadmin_password
Ahora vamos a server2:
server2:
Instalamos el paquete nagios-nrpe-server:
apt-get install nagios-nrpe-serverNombre de grupo de trabajo/dominio: <– WORKGROUP
Ahora abrimos /etc/nagios/nrpe.cfg:
vi /etc/nagios/nrpe.cfgDebemos configurar el servidor NRPE para permitir que server1 (IP: 192.168.0.100) se conecte, por lo tanto, agregamos 192.168.0.100 a la línea allowed_hosts:
| [...] # DIRECCIONES IP PERMITIDAS # Esta es una lista opcional de direcciones IP o nombres de host # que están permitidos para comunicarse con el demonio NRPE. # # Nota: El demonio solo realiza una verificación rudimentaria de la IP # del cliente. Recomendaría encarecidamente agregar entradas en su /etc/hosts.allow # para permitir que solo el host especificado se conecte al puerto # en el que está ejecutando este demonio. # # NOTA: Esta opción se ignora si NRPE se está ejecutando bajo inetd o xinetd allowed_hosts=127.0.0.1,192.168.0.100 [...] |
(Si no haces esto, recibirás el siguiente error cuando ejecutes
/usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101en server1:
root@server1:/etc/nagios-plugins/config# /usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101
CHECK_NRPE: Error - No se pudo completar el apretón de manos SSL.
root@server1:/etc/nagios-plugins/config#)
Además, server1 necesita ser permitido para pasar argumentos de línea de comandos al servidor NRPE, así que aún en el mismo archivo configuramos dont_blame_nrpe a 1:
| [...] # PROCESAMIENTO DE ARGUMENTOS DE COMANDO # Esta opción determina si el demonio NRPE permitirá a los clientes # especificar argumentos a los comandos que se ejecutan. Esta opción solo funciona # si el demonio fue configurado con la opción del script de configuración --enable-command-args. # # * ¡HABILITAR ESTA OPCIÓN ES UN RIESGO DE SEGURIDAD! * # Lea el archivo SECURITY para obtener información sobre algunas de las implicaciones de seguridad # de habilitar esta variable. # # Valores: 0=no permitir argumentos, 1=permitir argumentos de comando dont_blame_nrpe=1 [...] |
(Si no haces esto, verás el error
CHECK_NRPE: Se recibieron 0 bytes del demonio. Verifique los registros del servidor remoto para mensajes de error.para muchos chequeos de servicio remoto en la interfaz web de Icinga, y en /var/log/syslog en server2 verás estos errores:
Aug 23 14:20:20 server2 nrpe[11496]: Error: ¡La solicitud contenía argumentos de comando, pero la opción de argumento no está habilitada!
Aug 23 14:20:20 server2 nrpe[11496]: La solicitud del cliente era inválida, saliendo...)
Finalmente, debemos agregar definiciones de comandos para cada chequeo de servicio que queramos ejecutar en server2 y que no esté ya definido. Quiero ejecutar los chequeos check_procs, check_all_disks y check_mysql_cmdlinecred en server2; estos no están definidos en /etc/nagios/nrpe.cfg, así que los agrego ahora (también quiero ejecutar los chequeos check_users y check_load, pero estos ya están definidos):
| [...] command[check_procs]=/usr/lib/nagios/plugins/check_procs -w 250 -c 400 command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w '20%' -c '10%' -e command[check_mysql_cmdlinecred]=/usr/lib/nagios/plugins/check_mysql -H localhost -u 'nagios' -p 'howtoforge' [...] |
(Si no haces esto, recibirás errores como
NRPE: Comando 'check_all_disks' no definido
NRPE: Comando 'check_mysql_cmdlinecred' no definido
NRPE: Comando 'check_procs' no definidoen la interfaz web de Icinga.)
Como ves, he codificado los argumentos de línea de comandos porque usar variables como command[check_procs]=/usr/lib/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ no funcionó para mí. Pero aún así, cuando configuramos los chequeos de servicio para server2 en server1, tendremos que pasar argumentos de línea de comandos a estos chequeos; server2 ignorará estos porque he codificado los argumentos de línea de comandos en /etc/nagios/nrpe.cfg, pero si los dejas fuera, recibirás errores como /usr/lib/nagios/plugins/check_nrpe: option requires an argument – ‘a’ en la interfaz web de Icinga.
Ahora guarda el archivo y reinicia el servidor NRPE:
/etc/init.d/nagios-nrpe-server restartAhora verifica si el servidor NRPE está escuchando:
netstat -tap | grep nrperoot@server2:~# netstat -tap | grep nrpe
tcp 0 0 *:nrpe *:* LISTEN 2132/nrpe
root@server2:~#Ahora regresa a server1…
server1:
… y verifica si puede conectarse al servidor NRPE en server2:
/usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101La salida debería ser la siguiente en caso de éxito:
root@server1:~# /usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101
NRPE v2.12
root@server1:~#Ahora regresa a server2:
server2:
Queremos verificar MySQL en server2; porque usamos el demonio NRPE, podemos ejecutar el chequeo localmente en server2, es decir, no tenemos que abrir MySQL al exterior para permitir que server1 ejecute el chequeo. Por lo tanto, creo el usuario de MySQL nagios para localhost y localhost.localdomain en lugar de para 192.168.0.100 y server1.example.com:
mysql -u root -pGRANT USAGE ON *.* TO nagios@localhost IDENTIFIED BY 'howtoforge';
GRANT USAGE ON *.* TO [email protected] IDENTIFIED BY 'howtoforge';
FLUSH PRIVILEGES;quit;Ahora volvemos a server1…
server1:
… y creamos la configuración de Icinga para server2:
vi /etc/icinga/objects/server2_icinga.cfg| define host{ use generic-host host_name server2.example.com alias server2 address 192.168.0.101 } define service{ use generic-service host_name server2.example.com service_description PING check_command check_ping!100.0,20%!500.0,60% } define service{ use generic-service ; Nombre de la plantilla de servicio a usar host_name server2.example.com service_description Espacio en Disco check_command check_nrpe!check_all_disks!20%!10% } define service{ use generic-service host_name server2.example.com service_description Usuarios Actuales check_command check_nrpe!check_users!20!50 } define service{ use generic-service ; Nombre de la plantilla de servicio a usar host_name server2.example.com service_description Procesos Totales check_command check_nrpe!check_procs!250!400 } define service{ use generic-service ; Nombre de la plantilla de servicio a usar host_name server2.example.com service_description Carga Actual check_command check_nrpe!check_load!5.0!4.0!3.0!10.0!6.0!4.0 } define service{ use generic-service host_name server2.example.com service_description MySQL check_command check_nrpe!check_mysql_cmdlinecred!nagios!howtoforge } define service{ use generic-service host_name server2.example.com service_description SMTP check_command check_smtp } define service{ use generic-service host_name server2.example.com service_description POP3 check_command check_pop } define service{ use generic-service host_name server2.example.com service_description IMAP check_command check_imap } |
(Si he mencionado antes, aunque he codificado los argumentos de línea de comandos para algunos comandos en /etc/nagios/nrpe.cfg en server2, aún necesitamos agregar argumentos de línea de comandos a ciertos chequeos aquí.)
Como ves, uso check_nrpe para algunos chequeos y paso el chequeo real (como check_all_disks) como un argumento de línea de comandos a check_nrpe. Estos son los chequeos que se ejecutarán localmente por el servidor NRPE en server2. check_nrpe no es necesario para todos los chequeos. Chequeos que prueban una conexión desde el exterior como check_ping o check_smtp pueden ser ejecutados desde server1.
Para verificar los servicios SSH y HTTP en server2, podemos O agregar las siguientes secciones a /etc/icinga/objects/server2_icinga.cfg…
| [...] define service { use generic-service host_name server2.example.com service_description SSH check_command check_ssh } define service { use generic-service host_name server2.example.com service_description HTTP check_command check_http } |
… O agregamos server2.example.com a los grupos de hosts http-servers y ssh-servers en /etc/icinga/objects/hostgroups_icinga.cfg:
vi /etc/icinga/objects/hostgroups_icinga.cfg| # Algunas definiciones de grupos de hosts genéricos # Un grupo de hosts simple con comodín define hostgroup { hostgroup_name all alias Todos los Servidores members * } # Una lista de tus servidores Debian GNU/Linux define hostgroup { hostgroup_name debian-servers alias Servidores Debian GNU/Linux members localhost,server2.example.com } # Una lista de tus servidores web define hostgroup { hostgroup_name http-servers alias Servidores HTTP members localhost,server2.example.com } # Una lista de tus servidores accesibles por ssh define hostgroup { hostgroup_name ssh-servers alias Servidores SSH members localhost,server2.example.com } |
Reinicia Icinga:
/etc/init.d/icinga restartDespués deberías encontrar server2 en la interfaz web de Icinga:

Aquí están los chequeos de servicio para server2:

Si has agregado server2 a los grupos de hosts, debería estar listado bajo Resumen de Servicios Para Todos los Grupos de Hosts también:

5 Enlaces
- Icinga: https://www.icinga.org/
- Documentación de Icinga: http://docs.icinga.org/latest/en/
- Nagios: http://www.nagios.org/
- Debian: http://www.debian.org/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.