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