This is an old revision of the document!
Table of Contents
nagios nagios3 monitorizacion smp http
Nagios
nagios monitorizacion nagios3 smp
Es una herramienta de monitorización tanto de recursos privados
Instalación
aptitude update && aptitude install nagios3
Objetos
Nombre | Descripción | Ubicación (1) |
---|---|---|
Anfitrión | Define una máquina | /etc/nagios3/conf.d |
Contacto | Define una persona, con su correo eletrónico, al que le llegarán los avisos | /etc/nagios3/conf.d |
Grupo de contactos | Define una grupo de contactos | /etc/nagios3/conf.d |
Comando | Comando personalizado de nagios que, por ejemplo, hace un ping a una máquina | /etc/nagios-plugins/config |
Servicio | Define el comando que se le aplicará a un anfitrión determinado, y el contacto al que se notificará el resultado | /etc/nagios3/conf.d |
(1) Depende de que en el archivo
/etc/nagios3/nagios.cfg
Esté la directiva:
cfg_dir=/etc/nagios3/conf.d
Anfitrión
Por ejemplo creamos el siguiente archivo:
nano /etc/nagios3/conf.d/maquina1
Con el siguiente contenido:
define host{ use generic-host ; Inherit default values from a template host_name maquina1 ; The name we're giving to this host alias Ejemplo de anfitrión ; A longer name associated with the host address maquina1.mine.nu ; IP address of the host } Grabamos y salimos.
Contacto
Editamos el archivo que viene por defecto:
nano /etc/nagios3/conf.d/contacts_nagios2.cfg
Y creamos el nuestro:
define contact{ alias administrador1 contact_name administrador1 email cuenta@dominio.com host_notification_commands notify-host-by-email host_notifications_enabled 1 host_notification_options d,r host_notification_period 24x7 service_notification_commands notify-service-by-email service_notifications_enabled 1 service_notification_options w,u,c,r service_notification_period 24x7 }
Grabamos y salimos
Grupo de contactos
Editamos el archivo que viene por defecto:
nano /etc/nagios3/conf.d/contacts_nagios2.cfg
Y creamos el nuestro:
define contactgroup{ contactgroup_name administradores alias Administradores de Nagios members administrador1 }
Grabamos y salimos
Comandos
De momento no he creado ninguno, veamos solo un ejemplo:
cat /etc/nagios-plugins/config/ping.cfg
Y entre otros comandos, tenemos 'check-host-alive':
# 'check-host-alive' command definition define command{ command_name check-host-alive command_line /usr/lib/nagios/plugins/check_ping -H '$HOSTADDRESS$' -w 5000,100% -c 5000,100% $ }
Servicios
Creamos el siguiente archivo:
nano /etc/nagios3/conf.d/esta_vivo.cfg
Con el siguiente contenido:
define service{ check_command check-host-alive contacts contacto1 host_name maquina1 service_description HTTP use generic-service ; Inherit default values from a template }
Grabamos y salimos
Monitorizar los servicios locales de una máquina remote: NRPE
EN CONSTRUCCIÓN
nagios nrpe
nagios.sourceforge.net/docs/nrpe/NRPE.pdf
1. En la máquina remota:
aptitude update && aptitude install nagios xinetd nagios-nrpe-server netstat nagios-nrpe-plugin
1.1 Introducir la contraseña administrativa para la web dos veces.
A mi me da algún error:
...Starting nagios3 monitoring daemon: nagios3grep: /etc/nagios3/cgi.cfg: No such file or directory shift: 236: can't shift that many unable to determine nagios_check_command from /etc/nagios3/cgi.cfg!...failed. . Setting up nagios3-core (3.2.0-4) ... grep: /etc/nagios3/cgi.cfg: No such file or directory shift: 236: can't shift that many Starting nagios3 monitoring daemon: nagios3grep: /etc/nagios3/cgi.cfg: No such file or directory shift: 236: can't shift that many unable to determine nagios_check_command from /etc/nagios3/cgi.cfg!...failed. ...
De momento funciona….
2. Configurar NRPE para que corra bajo xinetd
2.1 Crear:
nano /etc/xinetd.d/nrpe
Con el siguiente contenido:
service nrpe { flags = REUSE socket_type = stream wait = no user = nagios server = /usr/sbin/nrpe server_args = -c /etc/nagios/nrpe.cfg -i log_on_failure += USERID disable = no # Ip de la máquina donde corre nagios only_from = 127.0.0.1 maquina_nagios.mine.nu }
2.2 Grabar y salir
2.3 Editar:
nano /etc/services
Y añadir la siguiente linea:
nrpe 5666/tcp # NRPE
2.4 Grabar y salir
2.5 Comprobar si nrpe está corriendo como demonio:
ps ax | grep nrpe 22573 ? Ss 0:00 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d
Si es así, matar el proceso:
kill -9 22573
2.6 Arranco xinetd:
/etc/init.d/xinetd restart
2.7 Comprobar que el servicio nrpe está corriendo bajo xinetd:
netstat -at | grep nrpe
tcp 0 0 *:nrpe *:* LISTEN
2.8 Comprobar, mediante nagios, lo mismo:
/usr/lib/nagios/plugins/check_nrpe -H localhost
NRPE v2.12
3. (OPCIONAL) Permitir al cortafuegos de la máquina remota que deje pasar tráfico por el puerto TCP 5666:
iptables -A INPUT -p tcp -m tcp –dport 5666 -j ACCEPT
4. (OPCIONAL) Si la máquina está detrás de un router, hay que mapear el puerto 5666 tcp a la ip local que tenga esa máquina
5. En la máquina local donde ya está corriendo nagios, instalar el plugin de nrpe:
aptitude update && aptitude install nagios-nrpe-plugin
6. Intentar averiguar si el servicio/demonio nrpe está corriendo en la máquina remota:
/usr/lib/nagios/plugins/check_nrpe -H maquina_remota.mine.nu
NRPE v2.12
ERRORES
- Error: NRPE daemon cannot be run as user/group root!
Hemos reiniciado xinetd:
/etc/init.d/xinetd restart
Y hemos intentado arrancar a mano nrpe como un servicio bajo xinetd:
/usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -i
Vemos que no arranca el servicio:
ps ax | grep nrpe
Y vemos el log de sistema:
clear && cat /var/log/syslog | tail
Solución:
1. Asegurarnos que en el archivo:
nano /etc/xinetd.d/nrpe
Existe la siguiente directiva:
user = nagios
Y que, lógicamente, el usuario 'nagios' existe en /etc/passwd
2. Reiniciar xinetd:
/etc/init.d/xinetd restart
- bind failed (Address already in use (errno = 98)). service = nrpe
No arranca el servicio nrpe porque el puerto (ver el puerto asociado a 'nrpe' en '/etc/services') está okupado:
lsof -ni :5666
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nrpe 2478 nagios 4u IPv4 7241 0t0 TCP *:nrpe (LISTEN)
Solución
1. Matar el proceso que estorba:
kill -9 2478
2. Reiniciar xinetd:
/etc/init.d/xinetd restart
Ejemplo: comprobar si una máquina está levantada
En este ejemplo vamos a crear un anfitrión que no existe para probar que nos envía un correo avisando de que está caído.
REQUISITO Tener un servidor de correo instalado en la misma máquina en la que se está ejecutando nagios
1. Creamos un anfitrión. Creamos el siguiente archivo:
nano /etc/nagios3/conf.d/mi_maquina.cfg
Con el siguiente contenido:
define host{ use generic-host ; Inherit default values from a template host_name mi_maquina ; The name we're giving to this host alias Esta máquina no existe ; A longer name associated with the host address noexiste.mine.nu ; IP address of the host }
2. Creamos un nuevo contacto editando el archivo:
nano /etc/nagios3/conf.d/contacts_nagios2.cfg
Con el siguiente contenido:
define contact{ alias contacto1 contact_name contacto1 email cuenta@dominio.com host_notification_commands notify-host-by-email host_notifications_enabled 1 host_notification_options d,r host_notification_period 24x7 service_notification_commands notify-service-by-email service_notifications_enabled 1 service_notification_options w,u,c,r service_notification_period 24x7 }
Grabamos y salimos
3. Creamos un servicio. Para ello vamos a usar el archivo:
/etc/nagios-plugins/config/ping.cfg
Que tiene el comando 'check-host-alive':
... # 'check-host-alive' command definition define command{ command_name check-host-alive command_line /usr/lib/nagios/plugins/check_ping -H '$HOSTADDRESS$' -w 5000,100% -c 5000,100% $ } ...
Creamos el siguiente archivo:
nano /etc/nagios3/conf.d/esta_vivo.cfg
Con el siguiente contenido:
define service{ check_command check-host-alive contacts contacto1 host_name mi_maquina service_description HTTP use generic-service ; Inherit default values from a template }
Grabamos y salimos
4. Verificamos la configuración:
nagios3 -v /etc/nagios3/nagios.cfg
Salida si la cosa va bien:
Nagios Core 3.2.0 Copyright (c) 2009 Nagios Core Development Team and Community Contributors Copyright (c) 1999-2009 Ethan Galstad Last Modified: 08-12-2009 License: GPL Website: http://www.nagios.org Reading configuration data... Read main config file okay... Processing object config file '/etc/nagios3/commands.cfg'... Processing object config directory '/etc/nagios-plugins/config'... Processing object config file '/etc/nagios-plugins/config/users.cfg'... Processing object config file '/etc/nagios-plugins/config/games.cfg'... Processing object config file '/etc/nagios-plugins/config/ping.cfg'... Processing object config file '/etc/nagios-plugins/config/mrtg.cfg'... Processing object config file '/etc/nagios-plugins/config/vsz.cfg'... Processing object config file '/etc/nagios-plugins/config/netware.cfg'... Processing object config file '/etc/nagios-plugins/config/telnet.cfg'... Processing object config file '/etc/nagios-plugins/config/rpc-nfs.cfg'... Processing object config file '/etc/nagios-plugins/config/mysql.cfg'... Processing object config file '/etc/nagios-plugins/config/http.cfg'... Processing object config file '/etc/nagios-plugins/config/mail.cfg'... Processing object config file '/etc/nagios-plugins/config/dhcp.cfg'... Processing object config file '/etc/nagios-plugins/config/breeze.cfg'... Processing object config file '/etc/nagios-plugins/config/nt.cfg'... Processing object config file '/etc/nagios-plugins/config/pgsql.cfg'... Processing object config file '/etc/nagios-plugins/config/ssh.cfg'... Processing object config file '/etc/nagios-plugins/config/ifstatus.cfg'... Processing object config file '/etc/nagios-plugins/config/ldap.cfg'... Processing object config file '/etc/nagios-plugins/config/radius.cfg'... Processing object config file '/etc/nagios-plugins/config/snmp.cfg'... Processing object config file '/etc/nagios-plugins/config/dummy.cfg'... Processing object config file '/etc/nagios-plugins/config/real.cfg'... Processing object config file '/etc/nagios-plugins/config/tcp_udp.cfg'... Processing object config file '/etc/nagios-plugins/config/disk.cfg'... Processing object config file '/etc/nagios-plugins/config/dns.cfg'... Processing object config file '/etc/nagios-plugins/config/news.cfg'... Processing object config file '/etc/nagios-plugins/config/flexlm.cfg'... Processing object config file '/etc/nagios-plugins/config/hppjd.cfg'... Processing object config file '/etc/nagios-plugins/config/procs.cfg'... Processing object config file '/etc/nagios-plugins/config/apt.cfg'... Processing object config file '/etc/nagios-plugins/config/ftp.cfg'... Processing object config file '/etc/nagios-plugins/config/fping.cfg'... Processing object config file '/etc/nagios-plugins/config/disk-smb.cfg'... Processing object config file '/etc/nagios-plugins/config/load.cfg'... Processing object config file '/etc/nagios-plugins/config/ntp.cfg'... Processing object config directory '/etc/nagios3/conf.d'... Processing object config file '/etc/nagios3/conf.d/extinfo_nagios2.cfg'... Processing object config file '/etc/nagios3/conf.d/host-gateway_nagios3.cfg'... Processing object config file '/etc/nagios3/conf.d/cntmalaga.cfg'... Processing object config file '/etc/nagios3/conf.d/timeperiods_nagios2.cfg'... Processing object config file '/etc/nagios3/conf.d/generic-host_nagios2.cfg'... Processing object config file '/etc/nagios3/conf.d/generic-service_nagios2.cfg'... Processing object config file '/etc/nagios3/conf.d/hostgroups_nagios2.cfg'... Processing object config file '/etc/nagios3/conf.d/contacts_nagios2.cfg'... Processing object config file '/etc/nagios3/conf.d/services_nagios2.cfg'... Processing object config file '/etc/nagios3/conf.d/localhost_nagios2.cfg'... Processing object config file '/etc/nagios3/conf.d/esta_vivo.cfg'... Read object config files okay... Running pre-flight check on configuration data... Checking services... Checked 8 services. Checking hosts... Checked 3 hosts. Checking host groups... Checked 5 host groups. Checking service groups... Checked 0 service groups. Checking contacts... Checked 1 contacts. Checking contact groups... Checked 1 contact groups. Checking service escalations... Checked 0 service escalations. Checking service dependencies... Checked 0 service dependencies. Checking host escalations... Checked 0 host escalations. Checking host dependencies... Checked 0 host dependencies. Checking commands... Checked 154 commands. Checking time periods... Checked 4 time periods. Checking for circular paths between hosts... Checking for circular host and service dependencies... 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
5. Reiniciamos nagios:
/etc/init.d/nagios3 restart
6. Y ahora a esperar y ver los logs:
clear && cat /var/log/nagios3/nagios.log | tail
Debería aparecer, al cabo de unos minutos, las siguientes lineas:
[1257947560] Finished daemonizing... (New PID=15385) [1257947590] HOST ALERT: mi_maquina;DOWN;SOFT;2;check_ping: Invalid hostname/address - mi_maquina.mine.nu [1257947660] HOST ALERT: mi_maquina;DOWN;SOFT;3;check_ping: Invalid hostname/address - mi_maquina.mine.nu [1257947730] HOST ALERT: mi_maquina;DOWN;SOFT;4;check_ping: Invalid hostname/address - mi_maquina.mine.nu [1257947800] HOST ALERT: mi_maquina;DOWN;SOFT;5;check_ping: Invalid hostname/address - mi_maquina.mine.nu [1257947870] HOST ALERT: mi_maquina;DOWN;SOFT;6;check_ping: Invalid hostname/address - mi_maquina.mine.nu [1257947940] HOST ALERT: mi_maquina;DOWN;SOFT;7;check_ping: Invalid hostname/address - mi_maquina.mine.nu [1257948010] HOST ALERT: mi_maquina;DOWN;SOFT;8;check_ping: Invalid hostname/address - mi_maquina.mine.nu [1257948080] HOST ALERT: mi_maquina;DOWN;SOFT;9;check_ping: Invalid hostname/address - mi_maquina.mine.nu [1257948150] HOST ALERT: mi_maquina;DOWN;HARD;10;check_ping: Invalid hostname/address - mi_maquina.mine.n u [1257948150] HOST NOTIFICATION: contacto1;mi_maquina;DOWN;notify-host-by-email;check_ping: Invalid hostname/ad dress - mi_maquina.mine.nu
En ese momento se le envía un correo a 'cuenta@dominio.com' con el siguiente contenido:
***** Nagios ***** Notification Type: PROBLEM Host: mi_maquina State: DOWN Address: noexiste.mine.nu Info: check_ping: Invalid hostname/address - noexiste.mine.nu Date/Time: Wed Nov 11 16:24:17 CET 2009
Ejemplo: comprobar si existe un proceso local
Comprobar No sé si se necesita el paquete 'nagios-nrpe-plugin'
Queremos comprobar si en la misma máquina que está corriendo nagios existe el proceso 'noexiste'
1. Creamos el comando, a partir del archivo:
nano /etc/nagios3/conf.d/comprobar_noexiste.cfg
Le damos el siguiente contenido:
define command{ command_name comprobar_noexiste command_line /usr/lib/nagios/plugins/check_procs -c 1:1 -C noexiste }
2. Grabamos y salimos
3. Creamos el servicio (sobre la máquina y el contacto que ya tenemos creados de ejemplos anteriores):
nano /etc/nagios3/conf.d/noexiste.cfg
Le damos el siguiente contenido:
define service{ check_command comprobar_noexiste contacts contacto1 host_name mi_maquina service_description Comprobar si existe el proceso noexiste use generic-service ; Inherit default values from a template }
4. Grabamos y salimos
5. Verificamos la configuración:
nagios3 -v /etc/nagios3/nagios.cfg
6. Reiniciamos nagios:
/etc/init.d/nagios3 restart
7. Y ahora a esperar y ver los logs:
clear && cat /var/log/nagios3/nagios.log | tail
... [1258042842] SERVICE ALERT: mi_maquina;Comprobar si existe el proceso noexiste;OK;HARD;4;PROCS OK: 1 process with command name 'noexiste' [1258042842] SERVICE NOTIFICATION: contacto1;Comprobar si existe el proceso noexiste;OK;notify-service-by-email;PROCS OK: 1 process with command name noexiste ...
En ese momento se le envía un correo a 'cuenta@dominio.com' con el siguiente contenido:
***** Nagios ***** Notification Type: PROBLEM Host: mi_maquina State: DOWN Address: noexiste.mine.nu Info: check_ping: Invalid hostname/address - noexiste.mine.nu Date/Time: Wed Nov 11 16:24:17 CET 2009
* Nagios *
Notification Type: PROBLEM
Service: Comprobar si la mula está corriendo Host: Servidor local Address: 192.168.1.2 State: CRITICAL
Date/Time: Thu Nov 12 17:15:44 CET 2009
Additional Info:
PROCS CRITICAL: 0 processes with command name noexiste
Ejemplo: comprobar si una partición está llena
Comprobar No sé si se necesita el paquete 'nagios-nrpe-plugin'
Queremos comprobar si en la misma máquina que está corriendo nagios una o más particiones tienen menos de x porcentaje de espacio libre.
1. Creamos el comando, a partir del archivo:
nano /etc/nagios3/conf.d/comprobar_espacio.cfg
Le damos el siguiente contenido:
define command{ command_name comprobar_espacio command_line /usr/lib/nagios/plugins/check_disk -w $ARG1$% -c $ARG2$% -p $ARG3$ }
2. Grabamos y salimos
3. Creamos el servicio (sobre la máquina y el contacto que ya tenemos creados de ejemplos anteriores):
nano /etc/nagios3/conf.d/espacio_root_mi_maquina.cfg
Le damos el siguiente contenido:
define service{ check_command comprobar_espacio!20!95!/ contacts contacto1 host_name mi_maquina service_description Partición / llena use generic-service ; Inherit default values from a template }
Nagios enviará un 'aviso' del tipo warning si queda menos del 20% de espacio libre, y uno del tipo 'critical' si queda menos del 95%.
Lógicamente es solo para comprobar que funciona, luego se debe cambiar a valores más bajos, como 20% y 5%, por ejemplo.
4. Grabamos y salimos
5. Verificamos la configuración:
nagios3 -v /etc/nagios3/nagios.cfg
6. Reiniciamos nagios:
/etc/init.d/nagios3 restart
7. Y ahora a esperar y ver los logs:
clear && cat /var/log/nagios3/nagios.log | tail
... [1258385009] SERVICE ALERT: mi_maquina;Partición / llena;CRITICAL;SOFT;3;DISK CRITICAL - free space: / 4510 MB (72% inode=88%): [1258385069] SERVICE NOTIFICATION: contacto1;mi_maquina;Partición / llena;CRITICAL;notify-service-by-email;DISK CRITICAL - free space: / 4510 MB (72% inode=88%): ...
En ese momento se le envía un correo a 'cuenta@dominio.com' con el siguiente contenido:
***** Nagios ***** Notification Type: PROBLEM Service: Partición / llena Host: Servidor local Address: 192.168.1.2 State: CRITICAL Date/Time: Mon Nov 16 16:24:29 CET 2009 Additional Info: DISK CRITICAL - free space: / 4510 MB (72% inode=88%):