User Tools

Site Tools


informatica:linux:nagios

This is an old revision of the document!


nagios nagios3 monitorizacion smp http

Nagios

nagios monitorizacion nagios3 smp

Es una herramienta de monitorización tanto de recursos privados

Instalación

sudo aptitude update && sudo aptitude install nagios3

Objetos

http://nagios.sourceforge.net/docs/3_0/configobject.html

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:

sudo vim /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 como servicio bajo xinet (a mi me casca) o como demonio (me furrula)

  • Como servicio bajo xinet (NO me funciona)

2.1.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.1.2 Grabar y salir

2.1.3 Editar:

nano /etc/services

Y añadir la siguiente linea:

nrpe 5666/tcp # NRPE

2.1.4 Grabar y salir

2.1.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.1.6 Arranco xinetd:

/etc/init.d/xinetd restart

2.1.7 Comprobar que el servicio nrpe está corriendo bajo xinetd:

netstat -at | grep nrpe
tcp        0      0 *:nrpe                  *:*                     LISTEN     

2.1.8 Comprobar, mediante nagios, lo mismo:

/usr/lib/nagios/plugins/check_nrpe -H localhost
NRPE v2.12

ERROR Cuando intento conectarme remotamente:

/usr/lib/nagios/plugins/check_nrpe -H maquina_remota.mine.nu
CHECK_NRPE: Error - Could not complete SSL handshake.

No tengo … de depurarlo.

  • Como demonio

2.1.1 (Opcional) Deshabilitar el servicio nrpe bajo xine

2.1.1.1 Editar:

nano /etc/xinetd.d/nrpe

Y dejar la linea tal que asi:

disable = yes

2.1.1.2 Reiniciar xinet:

/etc/inet.d/xinetd restart

2.1.1.3 Comprobar que no hay ningún servicio nrpe:

netstat -at | grep nrpe  

No debería mostrar nada por pantalla

2.1.2 Dar acceso a la máquina remota al demonio nrpe:

nano /etc/nagios/nrpe.cfg

Y dejar la linea tal que así:

allowed_hosts=127.0.0.1,maquina_local.mine.nu

2.1.3 Grabar y salir

2.1.4 Arrancar nrpe como demonio:

/usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d

2.1.5 Comprobar que se arrancó correctamente:

ps ax | grep nrpe
26492 ?        Ss     0:00 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d

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

7. (En la máquina remota) Crear el siguiente archivo:

nano /etc/nagios/nrpe.d/comandos.cfg

Con el siguiente contenido:

command[comprobar_noexiste]=/usr/lib/nagios/plugins/check_procs -c 1: -C noexiste

Este comando comprueba si al menos hay una instancia del proceso 'noexiste'. En caso contrario, arroja un error crítico

8. Grabar y salir

9. (Opcional) si estamos corriendo nrpe como demonio, hay que matar el proceso y volver a lanzarlo

10. (En la máquina local donde está corriendo nagios) Añadir un servicio:

nano /etc/nagios3/conf.d/noexiste_remoto.cfg

Con el siguiente contenido:

define service{
        check_command   check_nrpe!comprobar_noexiste
        contacts        contacto1
        host_name       mi_maquina
        service_description     Partición / llena
        use             generic-service ; Inherit default values from a template
        }

11. Reiniciar nagios

/etc/init.d/nagios3 restart

Al cabo de 4 alertas, debería enviar un correo.

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
  • Connection refused by host

Solución:

1. En la máquina remota mapear en el router el puerto 5666 tcp a la ip local de esa máquina

2. (Opcional) reiniciar el router para que los cambios surtan efecto

  • CHECK_NRPE: Error - Could not complete SSL handshake.
  • CHECK_NRPE: Error receiving data from daemon.
  • CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.

Solución Separar por comas las direcciones o nombres dentro de la directiva 'only_from' de '/etc/xinet.d/nrpe'. NO acaba de funcionar

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%):
informatica/linux/nagios.1295375130.txt.gz · Last modified: 2015/04/13 20:19 (external edit)