nagios nagios3 monitorizacion smp http
====== Nagios ======
nagios monitorizacion nagios3 snmp
http://nagiosplug.sourceforge.net/developer-guidelines.html
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
**IMPORTANTE**
1. Se pueden crear subdirectorios en /etc/nagios3/conf.d, pero
2. Todos los archivos de configuración tienen que acabar en .cfg
===== 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 =====
http://debianclusters.org/index.php/Nagios_NRPE_Addon_Installation_and_Configuration
1. En la maquina local (la que tiene instalada nagios):
Instalar nrpe-plugin:
sudo aptitude update && sudo aptitude install nagios-nrpe-plugin
Echarle un ojo a este archivoÑ
/etc/nagios-plugins/config/check_nrpe.cfg
Reiniciar el servicio:
sudo /etc/init.d/nagios3 restart
2. En la máquina remota:
Instalar nrpe (y plugins):
sudo aptitude update && sudo aptitude install nagios-nrpe-server nagios-plugins
Crear archivo de configuración:
sudo vim /etc/nagios/nrpe_local.cfg
Con el siguiente contenido:
allowed_hosts=monitor.jj.com
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 10 -c 1
En este caso habilitamos el comando 'check_disk' con los parámetros por defecto.
**RECOMENDADO**: También lo podemos hacer editando:
sudo vim /etc/nagios/nrpe.cfg
Reiniciar el servicio:
/etc/init.d/nagios-nrpe-server restart
3. Probarlo. Desde la máquina local:
Para probar que nrpe este arriba:
/usr/lib/nagios/plugins/check_nrpe -H test.jj.com -c check_users
Para probar el comando antes habilitado:
/usr/lib/nagios/plugins/check_nrpe -H test.jj.com -c check_disk
===== 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** [[informatica:linux:correo:postfix|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%):
===== Configurar interfaz web =====
Queremos acceder a nagios desde una interfaz gráfica. Para ello instalamos apache2 en la misma máquina:
1. Instalar apache2
sudo aptitude install apache2 -R
2. Crear un usuario:
sudo htpasswd /etc/apache2/contrasenyas miusuario
Teclear dos veces la contraseña
3. Crear el siguiente archivo:
sudo vim /etc/apache2/apache2.conf/nagios3.conf
Con el siguiente contenido:
ScriptAlias /cgi-bin/nagios3 /usr/lib/cgi-bin/nagios3
ScriptAlias /nagios3/cgi-bin /usr/lib/cgi-bin/nagios3
# Where the stylesheets (config files) reside
Alias /nagios3/stylesheets /etc/nagios3/stylesheets
# Where the HTML pages live
Alias /nagios3 /usr/share/nagios3/htdocs
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride AuthConfig
Order Allow,Deny
Allow From All
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /etc/apache2/contrasenyas
require valid-user
4. Recargar la configuración de apache:
sudo apache2ctl reload
5. Probar:
http://localhost/nagios3