Instalación de Nagios en CentOS
En este artículo mostramos la instalación y configuración de los aspectos necesarios para ejecutar Nagios. Los detalles de las directivas de configuración actuales de Nagios no serán tratados. Para eso la documentación está disponible en el sitio web de Nagios o localmente después que instale Nagios.
Estaremos explicando la instalación mediante RPM y yum desde el repositorio (RPMForge) de Dag, aunque los fuentes están disponibles para si desea construirlo usted mismo. La documentación para esto está disponible. Por favor, consulte la sección sobre los repositorios de terceros si tiene duda en como habilitar los repositorios. Además asumimos que tienen un servidor de correo trabajando en la red. Así es como se enviarán las notificaciones.
Sistema
- CentOS 4.x/5.x (Debe trabajar en RHEL/Fedora)
- Nagios 2.9
Referencias
Nagios: http://www.nagios.org/
Documentos Oficiales: http://nagios.org/docs/
Documentos de la comunidad: http://wiki.centos.org/Repositories
Nagios Exchange: http://www.nagiosexchange.org/
Interface Web: http://www.nagios.org/faqs/viewfaq.php?faq_id=183
Adiciones para la Virtualización: http://www.nagvis.org/
Paquetes
- nagios-2.9-1.el4.rf
- nagios-devel-2.9-1.el4.rf
- nagios-plugins-nrpe-2.5.2-1.el4.rf
- nagios-plugins-1.4.8-2.el4.rf
- apache 2.0
Contents
1. Mejoras generales
Una nota rápida sobre el mejoramiento. Generalmente, mejorar es tan simple como escribir yum update nombre_del_paquete. Solo para precaver respalde sus ficheros de configuración en /etc/ antes de mejorar. Segundo, siempre lea las notas de entrega para asegurarse que los ficheros de configuración y las directivas no han cambiado.
1.1. Mejorando a partir de la versión 2.4
Si está mejorando la versión 2.4 (y versiones 2.x anteriores) y ha instalado siguiendo los pasos de esta guía entonces con un simple yum update debe funcionar bien. Como siempre, es mejor respaldar cualquier configuración previa antes de la mejora solo para los casos que algo se pierda. Además, a partir de la entrega 2.4 a 2.5 los únicos paquetes que Dag ha reajustado son nagios y nagios-devel.
[me@mymachine ~] yum update nagios nagios-plugins nagios-devel nagios-plugins-nrpe
1.2. Mejorando a partir de la versión 2.5
Si está mejorando a partir de la versión 2.5 a la 2.6, los RPMs de Dag tuvieron algunas desviaciones. Compruebe de haber respaldado el directorio /etc/nagios antes de continuar.
[me@mymachine ~] service nagios stop [me@mymachine ~] cp -ar /etc/nagios /wherever/nagios_2.5_backup [me@mymachine ~] yum update nagios nagios-plugins nagios-devel nagios-plugins-nrpe
Si los ficheros cgi.cfg, misccommands.cfg o checkcommands.cfg se pierden o son salvados como .rpmsave o rpmnew, entonces solo copielos de regreso desde el respaldo que acaba de crear. De otra forma, ignore el error mencionado porque los RPMs han sido reparados. Gracias Dag!
Existe un error en el script check_linux_raid.pl en los plugins contribuidos. Esto es fácil de arreglar. Si usted no tiene problemas ejecutando el plugin entonces es que ya fue arreglado. Esto llamó nuestra atención a partir de la lista de correo de Nagios. Un usuario lo había señalado y reportó esto a los empaquetadores, así que esto probablemente esté resuelto ahora. De cualquier forma, para rectificar el script check_linux_rais.pl:
[me@mymachine ~] vim /usr/lib/nagios/plugins/contrib/check_linux_raid.pl Comment out line 26: use strict; #use lib utils.pm use utils qw(%ERRORS); [me@mymachine ~] nagios -v /etc/nagios/nagios.cfg [me@mymachine ~] service nagios start
2. Configurando Apache
Compruebe que tenga Apache instalado, luego tendrá que configurarlo si es que no lo ha hecho ya.
[me@mymachine ~] yum install httpd [me@mymachine ~] vim /etc/httpd/conf/httpd.conf
Al menos edite la directiva el nombre del servidor (ServerName) a su dirección IP dentro del fichero /etc/httpd/conf/httpd.conf. Luego active Apache y compruebe que arranque junto con el inicio del sistema:
[me@mymachine ~] chkconfig httpd on [me@mymachine ~] service httpd start
Ahora abra su navegador web y vea si su servidor web está corriendo: http://localhost (o su dirección IP). Debe ver la página de prueba de Apache 2. De ser así continúe.
Si necesita más asistencia para hacer correr Apache, específicamente si usted tiene necesidad de asegurar el servidor, entonces por favor siga la documentación en http://www.apache.org/. Lo que proponemos aquí hará que su servidor web se inicie pero no suministra método de seguridad alguno, solo para que lo tenga presente. Si usted está ejecutando el servidor internamente por completo, este detalle no será gran cosa.
Ok, después que esté corriendo Apache, vamos a instalar Nagios para comenzar a trabajar en la forma de configurarlo. Por defecto, los RPMs que va a instalar crean automáticamente el fichero nagios.conf para Apache. Este fichero está en /etc/httpd/conf.d/nagios.conf.
3. Instalación
Nagios necesita que varios paquetes sean instalados para que pueda desempeñarse de la forma mágica que sabe hacer. El principal es el propio paquete Nagios. Sin el paquete de los plugins, Nagios no estará habilitado para procesar actualmente chequeo alguno en su sistema. El paquete de desarrollo contiene todas las librerías, encabezados y ficheros de documentación para el desarrollo de Nagios. Los otros paquetes opcionales son NRPE y el NSCA (Nagios Service Check Acceptor) el cual no usamos en este artículo. Usted puede tener uso para el, así que compruebe el sitio principal para los detalles.
Nagios debe ser ejecutado bajo el usuario y grupo "nagios". La instalación del RPM se encarga de esto por usted, así que no hay necesidad de crear el usuario y el grupo manualmente.
[me@mymachine ~] yum install nagios nagios-plugins nagios-plugins-nrpe nagios-devel
Esto iniciará el proceso de instalación, descargará algunos pocos paquetes para satisfacer las dependencias. Esta es la instalación. Veamos ahora para Apache.
4. Configuración del fichero de Nagios para Apache
A menos que necesite otras opciones como es el caso de la configuración SSL o permitir el acceso a algunos anfitriones a la forma CGI solamente, entonces el fichero predeterminado nagios.conf se ajustará a sus necesidades. Aquí está como se ve nagios.conf:
ScriptAlias /nagios/cgi-bin "/usr/lib/nagios/cgi" <Directory "/usr/lib/nagios/cgi"> # SSLRequireSSL Options ExecCGI AllowOverride None Order allow,deny Allow from all # Order deny,allow # Deny from all # Allow from 127.0.0.1 AuthName "Nagios Access" AuthType Basic AuthUserFile /etc/nagios/htpasswd.users Require valid-user Alias /nagios "/usr/share/nagios" <Directory "/usr/share/nagios"> # SSLRequireSSL Options None AllowOverride None Order allow,deny Allow from all # Order deny,allow # Deny from all # Allow from 127.0.0.1 AuthName "Nagios Access" AuthType Basic AuthUserFile /etc/nagios/htpasswd.users Require valid-user </Directory>
A menos que necesite otras opciones de configuración, esto es todo por ahora. Ahora, veamos la autenticación.
4.1. Configurando el fichero de las contraseñas
Si usted no quiere usar el nombre "nagiosadmin" simplemente sustitúyalo por su nombre. Recuerde que más tarde necesitará usar el mismo nombre en los ajustes de la configuración del CGI.
[me@mymachine ~] htpasswd -c /etc/nagios/htpasswd.users nagiosadmin New password: type_your_password Re-type new password: re-type_your_password Adding password for user nagiosadmin
Esto es todo lo que necesita hacer si desea crear una cuenta invitado (guest). La cuenta invitado le permitirá a los visores ver varias cosas que usted especifique dentro de Nagios, pero no le dará acceso total a la interface CGI. Por ejemplo, los visores podrán ver información sobre el estado del anfitrión, pero no podrá programar la hora de apagado de las computadoras y cosas como esa. Si usted desea una cuenta de invitado, adicione la cuenta.
[me@mymachine ~] htpasswd /etc/nagios/htpasswd.users guest New password: type_your_password Re-type new password: re-type_your_password Adding password for user guest
|
NOTA: Fíjese que esta vez no pusimos la opción -c. Esta es la opción de creación del fichero. Como acabamos de crear el fichero, asegúrese de que el resto de las cuentas que adicione no sean con la opción de creación. De hacerlo sobrescribirá este fichero y perderá las cuentas que haya creado anteriormente. |
4.2. Configurando el fichero CGI
El próximo paso es configurar los usuarios que acaba de crear en fichero CGI de configuración principal.
Vamos a asumir que usted no está utilizando la cuenta invitado y que usted ha creado solo una cuenta administrador "nagiosadmin". Además compruebe haber hecho los ajustes para usar la autenticación. 1 significa activo, 0 significa desactivo.
[me@mymachine ~] cd /etc/nagios [me@mymachine nagios] vim cgi.cfg # AUTHENTICATION USAGE use_authentication=1 # SYSTEM/PROCESS INFORMATION ACCESS authorized_for_system_information=nagiosadmin # CONFIGURATION INFORMATION ACCESS authorized_for_configuration_information=nagiosadmin # SYSTEM/PROCESS COMMAND ACCESS authorized_for_system_commands=nagiosadmin # GLOBAL HOST/SERVICE VIEW ACCESS authorized_for_all_services=nagiosadmin authorized_for_all_hosts=nagiosadmin # GLOBAL HOST/SERVICE COMMAND ACCESS authorized_for_all_service_commands=nagiosadmin authorized_for_all_host_commands=nagiosadmin
Salve este fichero cuando haya terminado de editarlo. Existen muchos otros parámetros de configuración a cambiar y con los cuales experimentar, así que tiene la libertad de personalizar la interface web a su gusto.
Ahora vamos a probar lo que hemos hecho hasta ahora. Reinicie el servidor Apache y explore la dirección http://localhost/nagios/. Después que suministre las credenciales que acabamos de crear, debe mostrarse la pequeña y bonita interfaz de Nagios. Puede explorar los enlaces de la izquierda pero la mayoría de ellos no funcionarán porque nada ha sido configurado aun.
4.3. Configurando nagios.cfg
Una vez que comience a verificar en /etc/nagios, usted verá que existen algunas configuraciones de ejemplo en las cuales podemos auxiliarnos. Una de ellas es "localhost.cfg". Este fichero usa un acercamiento todo en uno para configurar más tarde los ficheros objetos. Esto puede resultar confuso, especialmente si usted tiene que monitorizar eventualmente redes muy grandes. En su lugar, usted partirá la configuración en ficheros separados, lo cual será saludable a largo plazo. Continúe y mueva este fichero. Previamente, el fichero de ejemplo fue nombrado "bigger.cfg" y "minimal.cfg" pero con Nagios 2.9 ahora es solo un fichero.
[me@mymachine ~] cd /etc/nagios [me@mymachine nagios] mv localhost.cfg localhost.cfg_org
Ahora vamos a abrir el fichero principal de la configuración de Nagios. Este fichero es básicamente descriptivo por si mismo con comentarios adentro. La versión corta es como la siguiente. Nagios le permite especificar cada configuración desde un solo fichero, "localhost.cfg", si así es deseado.
Cuando tiene que monitorizar solo unas pocas computadoras y servicios esta idea es racional, pero cuando tiene que monitorizar toneladas de elementos esta es una mala idea. Le va a llevar un largo tiempo acostumbrarse a configurar Nagios para echarlo a andar, así que hágase un favor y parta todos los ficheros en categorías como especificamos más abajo. Esto quiere decir, utilice un fichero separado para los anfitriones y grupos de anfitriones (hostgroups), un fichero separado para los servicios y grupo de servicios y un fichero separado para cada cosa que usted decida configurar. Usted lo agradecerá más tarde.
Ahora vamos a comenzar con las necesidades básicas. El comando externo de opciones lo activamos con el objetivo de permitir la ejecución de comandos desde la interface web CGI.
[me@mymachine nagios] vim nagios.cfg # OBJECT CONFIGURATION FILE(S) cfg_file=/etc/nagios/contactgroups.cfg cfg_file=/etc/nagios/contacts.cfg cfg_file=/etc/nagios/hostgroups.cfg cfg_file=/etc/nagios/hosts.cfg cfg_file=/etc/nagios/services.cfg cfg_file=/etc/nagios/timeperiods.cfg # EXTERNAL COMMAND OPTION check_external_commands=1 # EXTERNAL COMMAND CHECK INTERVAL command_check_interval=1
Salve el fichero y siga adelante. Ahora, para cada fichero que especificamos arriba necesitará crear el fichero porque este no existe dentro de /etc/nagios.
[me@mymachine nagios] touch contactgroups.cfg contacts.cfg hostgroups.cfg hosts.cfg services.cfg timeperiods.cfg [me@mymachine nagios] chown nagios.nagios contactgroups.cfg contacts.cfg hostgroups.cfg hosts.cfg services.cfg timeperiods.cfg
Una última nota sobre esta sección. Si usted está planeando usar comandos externos en la interface CGI (check_external_commands), puede que presente algunos problemas con los permisos. Por favor, consulte la interface FAQ de Nagios si obtiene algunos errores cuando intente correr el comando en la interface web. La FAQ está ubicada en: http://nagios.sourceforge.net/docs/2_0/commandfile.html.
5. Ficheros de configuración para objeto
Como mencionamos, cuando los ficheros de configuración son partidos, Nagios lee los datos desde estos ficheros con el objetivo de procesar las comprobaciones de anfitrión y servicio a través de la red. Antes de comenzar, la documentación detallada de todos estas opciones para los objetos basados en plantillas están ubicadas en el sitio web. Esto le ayudará a dar los primeros pasos, así que vamos a comenzar con el fichero períodos de tiempo (timeperiods). Obviamente, usted puede sustituir sus opciones con diferentes valores.
5.1. Períodos de tiempo
[me@mymachine nagios] vim timeperiods.cfg # '24x7' timeperiod definition define timeperiod{ timeperiod_name 24x7 alias 24 Hours A Day, 7 Days A Week sunday 00:00-24:00 monday 00:00-24:00 tuesday 00:00-24:00 wednesday 00:00-24:00 thursday 00:00-24:00 friday 00:00-24:00 saturday 00:00-24:00 } # 'workhours' timeperiod definition define timeperiod{ timeperiod_name workhours alias "Normal" Working Hours monday 08:00-17:00 tuesday 08:00-17:00 wednesday 08:00-17:00 thursday 08:00-17:00 friday 08:00-17:00 } # 'nonworkhours' timeperiod definition define timeperiod{ timeperiod_name nonworkhours alias Non-Work Hours sunday 00:00-24:00 monday 00:00-09:00,17:00-24:00 tuesday 00:00-09:00,17:00-24:00 wednesday 00:00-09:00,17:00-24:00 thursday 00:00-09:00,17:00-24:00 friday 00:00-09:00,17:00-24:00 saturday 00:00-24:00 } # 'none' timeperiod definition define timeperiod{ timeperiod_name none alias No Time Is A Good Time }
Usted puede especificar tantas de esta como desee. Por ejemplo, digamos que tiene la necesidad de contactar a los colegas solo en los fines de semana. Para esto puede crear una plantilla "weekends" y usarla solo viernes, sábado y domingo con los tiempos apropiados que haya especificado.
5.2. Contactos y grupos de contactos
Los contactos están partidos en dos ficheros diferentes. Uno almacena las opciones de los contactos actuales y el otro los contactos juntos en grupos. Los grupos son a quienes usted especifica para que Nagios contacte más tarde.
[me@mymachine nagios] vim contacts.cfg # service_notification_options are w,u,c,r,f,n # w=warning u=unknown c=critical r=recovery f=flapping n=none # host_notification_options d,u,r,f,n # d=down u=unreachable r=recovery f=flapping n=none define contact{ contact_name me alias me service_notification_period 24x7 host_notification_period 24x7 service_notification_options c,r host_notification_options d,r service_notification_commands notify-by-email host_notification_commands host-notify-by-email email me@myemailaddress.whatever } define contact{ contact_name you alias you service_notification_period workhours host_notification_period workhours service_notification_options c,r host_notification_options d,r service_notification_commands notify-by-email host_notification_commands host-notify-by-email email you@youremailaddress.whatever }
Usted pude seleccionar hacer como desee pero para los propósitos de este artículo hemos fijado los contactos para ser notificados en las alertas críticas y de restauración. En ocasiones puede que otras cosas no sean de interés, aquí estamos monitoreando para recibir alertas cuando haya algún fallo técnico temporal o cuando algo esté en un estado de advertencia, especialmente a las 4:00 am.
Algunas razones podrían ser: comprobamos frecuente de la interfaz CGI de Nagios durante el día, todas las alertas son reenviadas a un sistema de ticketing. Dicho esto no queremos generación de tickets innecesarias simplemente porque un plugin falló al ejecutarse aproximadamente a esta hora. Claro, también podemos configurar un contacto y grupo separado para recibir solo las alertas de advertencias y las desconocidas y luego enviarlas hacia una dirección de correo electrónico diferente.
Como habíamos dicho antes, el proceso de configuración es completamente adaptable a sus necesidades. En nuestro caso, estamos usando solamente correo electrónico. Nuestro sistema de correo electrónico se encarga de procesar a donde van las alertas. Sin embargo, usted podría configurar Nagios para enviar los mensajes directamente a pagers. Consulte en los documentos la configuración de las opciones de objeto para timeperiods.cfg. Si usted desea ver los comandos siendo encausados por las alertas, vea el fichero /etc/nagios/misccommands.cfg, en los grupos de contacto.
[me@mymachine nagios] vim contactgroups.cfg # 'einsteins' contact group definitions define contactgroup{ contactgroup_name einsteins alias einsteins members me,you }
Esto es un ejemplo sencillo de contactos y grupos de contactos. Usted puede establecer tantas posibilidades como usted realmente desee. Puede crear tantos contactos como necesite. Es bastante sencillo.
5.3. Anfitrión y grupos de anfitriones
La información sobre el anfitrión y grupo de anfitrión está almacenada en dos ficheros hosts.cfg y hostgroups.cfg. De la misma forma que usted puede mezclar y hacer coincidir contactos en varios grupos de contactos, usted puede hacer lo mismo con los nombres de los anfitriones en los grupos de anfitriones. En nuestro documento preferimos crear una plantilla de configuración a la que podamos apegarnos más adelante en nuestro fichero de configuración. Esto nos ahorrará una increíble cantidad de tiempo a la hora de teclear.
[me@mymachine nagios] vim hosts.cfg # Generic host definitions define host{ name generic-host ; Generic template name notifications_enabled 1 ; Host notifications are enabled event_handler_enabled 1 ; Host event handler is enabled flap_detection_enabled 1 ; Flap detection is enabled process_perf_data 1 ; Process performance data retain_status_information 1 ; Retain status information across program restarts retain_nonstatus_information 1 ; Retain non-status information across program restarts register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE! } # This creates a generic template that any host can use. # Notifies never, checks 15 times before showing critical on CGI interface, define host{ name basic-host use generic-host check_command check-host-alive max_check_attempts 15 notification_interval 0 notification_period none notification_options n register 0 } # This creates a generic host that your routers can use # monitors host(s) 24x7, notifies on down and recovery, checks 15 times before going critical, # notifies the contact_group every 30 minutes define host{ name your-routers-host use generic-host check_command check-host-alive max_check_attempts 15 notification_interval 30 notification_period 24x7 notification_options d,r register 0 } define host{ use basic-host host_name mymachine1 alias mymachine1 address 192.168.100.101 contact_groups einsteins # notification_options d,r #overrides the basic-host option } define host{ use your-routers-host host_name router1 alias router1 address 192.168.100.100 contact_groups einsteins }
¿ Comienza a ver cuanto tiempo nos ahorran las plantillas predefinidas cuando adicionamos anfitriones?
Estamos monitoreando alrededor de 100 anfitriones y más de 200 servicios, así que hacer las cosas a la manera de las plantillas puede realmente ser productivo a largo plazo. Esto puede ser un poco confuso pero apéguese a los documentos y aprenderá bastante rápido.
Cuando se trate de las opciones de objeto de las plantillas que cada fichero pueda contener, vea http://localhost(o su IP)/nagios/docs/configobject.html. Esto le ayudará tremendamente porque Nagios tiene una gran cantidad de opciones que le permiten escoger entre ellas. Partimos las cosas porque necesitábamos notificaciones en nuestros anfitriones enrutadores pero no en anfitriones básicos. Si usted desea sobrescribir el contenido de la notificación de los anfitriones básicos, entonces solo especifíquelo dentro de la definición del mismo anfitrión. Comienza ahora a comprender por qué usa plantillas ?
Algunas personas han comentado que nuestra lógica aquí es confusa pero le ahorrará toneladas de teclazos. Si usted solo tiene que comprobar unos pocos anfitriones esto posiblemente suene destructivo.
Ok, ahora en los grupos de anfitriones.
[me@mymachine nagios] vim hostgroups.cfg define hostgroup{ hostgroup_name basic-clients alias basic clients members mymachine1 } define hostgroup{ hostgroup_name your-routers alias routers members router1 }
Es tan simple como lo que está viendo. Usted puede especificar clientes desde hosts.cfg dentro de los grupos de anfitriones si así lo desea. Bastante sencillo ....
5.4. Servicios
Para comenzar, va ha necesitar al menos un monitor de servicio. Esto puede ser una simple comprobación para ver si el anfitrión está vivo, o un ping. De nuevo, como demostramos arriba las cosas pueden partirse en plantillas para hacerlas más fácil a medida que avanzamos.
[me@mymachine nagios] vim services.cfg # Generic service definition template define service{ name generic-service ; Generic service name active_checks_enabled 1 ; Active service checks are enabled passive_checks_enabled 1 ; Passive service checks are enabled/accepted parallelize_check 1 ; Active service checks should be parallelized (Don't disable) obsess_over_service 1 ; We should obsess over this service (if necessary) check_freshness 0 ; Default is to NOT check service 'freshness' notifications_enabled 1 ; Service notifications are enabled event_handler_enabled 1 ; Service event handler is enabled flap_detection_enabled 1 ; Flap detection is enabled process_perf_data 1 ; Process performance data retain_status_information 1 ; Retain status information across program restarts retain_nonstatus_information 1 ; Retain non-status information across program restarts register 0 ; DONT REGISTER THIS DEFINITION - NOT A REAL SERVICE, JUST A TEMPLATE! } # Generic for all services define service{ use generic-service name basic-service is_volatile 0 check_period 24x7 max_check_attempts 15 normal_check_interval 10 retry_check_interval 2 notification_interval 0 notification_period none register 0 } define service{ use basic-service name ping-service notification_options n check_command check_ping!1000.0,20%!2000.0,60% register 0 } define service{ use ping-service service_description PING contact_groups einsteins hostgroup_name basic-clients,your-routers # host_name one_client }
Esto es un ejemplo de cómo establecer plantillas. Usted puede usar individualmente hostgroup_name o host_name. Hemos declarado una plantilla general para usar llamada "basic-service" la cual se apega a la definición "generic-service" de arriba. Luego "ping-service" es usada para definirla aún más bajo. La razón que partimos es porque: digamos que crea otro grupo de anfitriones llamado "your-switches" pero desea que las notificaciones sobre este servicio vayan a un grupo de contacto diferente. Entonces usted solo define otra definición de servicio y adiciona este grupo de anfitrión a la definición y aplica un grupo de contacto diferente.
La última definición sobrescribe todos los contenedores sobre ella. El último hombre en pie es el que prevalece. La última opción que vea Nagios, es con la que él se queda. Para el ejemplo siguiente, el "ping-serivce" es aun el mismo, pero queremos que vaya a un grupo de contacto diferente. La misma lógica que fue explicada en hosts.cfg y hostgroups.cfg.
define service{ use ping-service service_description PING contact_groups group2 hostgroup_name your-switches # host_name one_client }
El fichero services.cfg puede ser bastante incómodo porque todas las comprobaciones diferentes pueden ser configuradas. Por ejemplo, usted puede configurar para comprobar el servicio smtp a través de check_smtp, el servicio http a través de check_http, dhcp, dns y cualquier clase de elemento a través del plugin SNMP. Le mostraremos un ejemplo de una comprobación del servicio smtp.
# SMTP - ensure SMTP services are available. define service{ use basic-service name smtp-service service_description SMTP notification_interval 15 contact_groups einsteins notification_options c,r notification_period 24x7 check_command check_smtp register 0 } define service{ use smtp-service hostgroup_name smtp-servers # host_name one_client }
Obviamente esto se pega de la plantilla de arriba, entonces define el grupo actual de anfitriones a comprobar. El grupo de anfitrión smtp-server tendría que existir en hostgroups.cfg y hosts tendría que estar definido en hosts.cfg.
Antes de continuar, permítanos explicar un poco que es lo que ocurre actualmente con estos ficheros. Nagios lee las opciones de configuración desde todos estos ficheros de texto. Cuando sea el momento de procesar el smtp-service que definimos, Nagios busca a ver que es lo que check_command se supone deba ejecutar. Entonces busca en el fichero checkcommands.cfg que es lo que supone que deba hacer actualmente check_smtp. Esto sería:
# 'check_smtp' command definition define command{ command_name check_smtp command_line $USER1$/check_smtp -H $HOSTADDRESS$ }
Muy bien, lo he encontrado, dice él!! Ahora Nagios sabe ir a /usr/lib/nagios/plugins/ (camino por defecto para la instalación RPM) y ejecuta el plugin check_smtp que encontró allí. Sustituye $HOSTADDRESS$ con el anfitrión ubicado en el grupo anfitrión, sale a comprobar si el SMTP está corriendo en el servidor. Luego regresa con un si o un no. Nagios procesa esta información de acuerdo con las opciones que usted fijó en los ficheros de configuración y muestra la información en la interface CGI.
Esto es los principal en cómo comenzar a configurar Nagios. Hemos simplificado esto bastante pero usted ahora debe comprender, al menos, donde comenzar la configuración de anfitriones y servicios. Busque en /usr/lib/nagios/plugins para ver todo lo que puede comprobar en una computadora. La lista es bastante larga con varias cosas. Además, consulte http://www.nagiosexchange.org/ para ver todo tipo de plugins de terceros escritos por varios miembros de la comunidad. Además usted puede escribir sus propios plugins fácilmente. Existen varias cosas extras que usted puede hacer dentro de Nagios, como definir aumento y extensión de la información de servicio/anfitrión. Esto lo explicaremos después que inicie Nagios y vea de que trata todo esto.
6. Iniciando Nagios
En este punto usted debe tener una configuración funcional con uno o dos anfitriones para monitorizar. Debido a que no hemos hecho eso aún, vamos a iniciar el demonio Nagios, configurarlo para que inicie junto con el arranque del sistema y compruebe los ficheros de configuración en busca de errores.
[me@mymachine nagios] chkconfig nagios on [me@mymachine nagios] nagios -v nagios.cfg Nagios 2.4 Copyright (c) 1999-2006 Ethan Galstad (http://www.nagios.org) Last Modified: 05-31-2006 License: GPL Reading configuration data... Running pre-flight check on configuration data... Total Warnings: 85 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check [me@mymachine nagios] service nagios start Starting network monitor: nagios
Seguramente notará que nuestro ejemplo ha mostrado 85 advertencias. Esto es porque tenemos 85 servicios que están siendo comprobados que no tienen grupo asociado al servicio. Las advertencias usualmente se dejan pasar. Así como la comprobación (nagios -v) nos dice "Things look okay" las cosas están bien. Para evitar las advertencias simplemente haga los que las advertencias le dicen y arregle los hechos que la ocasionan.
7. Escaladas
Las escaladas son bastante buenas en permitirle especificar a donde pueden ir las notificaciones segundas, terceras, cuartas, etc. Por ejemplo, usted puede tener un servicio SMTP fijado para notificar a un grupo de contacto cada 30 minutos indefinidamente hasta que se resuelva el problema.
Con una escalada configurada, usted puede decirle a la segunda, tercera, cuarta notificación que vayan a tal dirección de correo electrónico o a tal pager y entonces usted puede decir que las notificaciones 5, 6, 7 van a ir a otra dirección o pager, y así sucesivamente. En nuestro ejemplo usamos esto extensivamente porque la primera notificación van a un software de ticketing, luego fijamos el resto de las notificaciones para que se dirijan a un pager simplemente. No queremos crear múltiples tickts para el mismo incidente pero queremos que Nagios nos envíe constantemente el problema hasta que respondamos a la situación.
Veamos un ejemplo, asumimos que usted ha adicionado esto a el fichero nagios.cfg y que lo ha creado en el directorio /etc/nagios:
[me@mymachine nagios] vim escalations.cfg define serviceescalation{ host_name mymachine1 service_description SMTP first_notification 1 last_notification 0 notification_interval 30 contact_groups mypager }
Definimos escaladas de anfitrión y escaladas de servicio todas en el mismo fichero que mostramos arriba. Usted puede partir estos dos como cualquier otro. Solo especifíquelo en el fichero nagios.cfg par decirle al programa donde reside el fichero. Esto no lo partimos porque no tenemos demasiadas escaladas por las cuales preocuparnos. Esto puede variar según su caso.
8. Información extendida
La información extendida es una prestación adicional usada principalmente por razones de estética en la interface web. Esta puede ser partida en información extendida de anfitrión e información extendida de servicio. Las cosas que puede hacer con esto es poner pequeños iconos al lado de los nombres de los anfitriones, especificar enlaces URL fuera de Nagios y hacer que las cosas se ven más bonitas en el sistema. En nuestro ejemplo usamos información extendida para apuntar a los enlaces fuera del anfitrión que hospeda los gráficos MRGT de Nagios. A continuación mostramos como usted puede hacer esto. Recuerde especificar esto en el fichero nagios.cfg y luego cree el fichero.
[me@mymachine nagios] vim serviceextinfo.cfg # yum's definitions define serviceextinfo{ host_name yum service_description PING notes_url http://mynagiosbox/mrtg/myfile.html icon_image graph.gif icon_image_alt View graphs }
Esto pone un pequeño icono a un costado del servicio PING en la interface web. Cuando hace clic en uno de estos iconos, le lleva directamente al gráfico MRTG que estamos corriendo en la misma computadora. En nuestro caso, tenemos un servidor yum interno sincronizándose todas las noches con los espejos. Todo el tráfico ethernet es graficado a través de MRTG, luego Nagios apunta un enlace a esto, de esta forma la navegación se hace más fácil. Esto prueba crear un buen historial del uso del ancho de banda, entre otras cosas. Use alguna creatividad y usted puede registrar, graficar y enlazar a prácticamente cualquier cosa que desee. Por ejemplo, a los usuarios y procesos registrados en su sistema.
9. Dependencias
Otro fichero interesante que usamos es la opción dependencias de anfitrión y servicio. Lo que esto hace es fijar una tira de comprobaciones antes que algo alerte. Por ejemplo, cuando comprobamos el servicio de login de un servidor que no es Linux. Tenemos alrededor de otros 15 servicios siendo comprobados en este anfitrión pero ellos son dependientes de su posibilidad de hacer login a la computadora antes de procesar estas comprobaciones. Cuando un login no es satisfactorio, no queremos que los 15 servicios comiencen a preocuparnos o a enviarnos mensajes al pager, así fijamos un árbol de dependencias. Si el login falla, solo las alarmas del login salen. Obtenemos una notificación para esto, no millones de todas las otras comprobaciones.
Usted puede usar esta prestación para los anfitriones también. Recuerde especificar esto en el fichero nagios.cfg y luego cree el fichero.
define servicedependency{ host_name your_host service_description LOGIN dependent_host_name your_host dependent_service_description another_service execution_failure_criteria w,u,c notification_failure_criteria w,u,c }
El fallo en el criterio de ejecución le dice a Nagios que se supone hacer si el servicio de "LOGIN" está desactivado. Esto quiere decir que "another_service" ni siquiera se molestará en comprobar el servicio si login está en un estado de advertencia, desconocido, o crítico. El criterio de notificación de fallo determina cuando las notificaciones no deberían ser enviadas al exterior. Si la comprobación del login genera un estado de advertencia, desconocido, o crítico, entonces ningún mensaje será enviado.
Solo para asegurarnos cuando usted haya terminado de adicionar, editar o crear nuevos ficheros de configuración y corra nagios -v nagios.cfg. Esto procesa sus ficheros de configuración y hace la comprobación en ellos antes de refrescar el servicio actualmente.
10. SELinux
Unas palabras sobre SELinux. Actualmente, este ejemplo no lo usa. Sabemos que en la versión de SELinux que viene con CentOS 5 está mucho más madura que la que vienen con CentOS 4, así que inténtelo. Cuando comprobamos el funcionamiento de este artículo en CentOS 5 desactivamos SELinux. Si le suceden cosas extrañas, tenga SELinux en mente.
11. Conclusiones
Básicamente, esta es una recapitulación de Nagios. Hemos simplificado casi todo. Tenemos la esperanza de haber explicado las cosas de la forma más simple. La documentación para la utilidad es maravillosa, pero hay mucha documentación que se hace difícil para comenzar. Si tiene una red que mantener, abogamos que corra Nagios (a menos que prefiera otra utilidad) como si fuera su hermano mayor que atiende los anfitriones y dispositivos. Nagios en ocasiones puede resultar muy útil.
Como mencionamos anteriormente, le llevará algo de tiempo ser bueno en él, y sabemos que no es sencillo iniciarse en él pero una vez que lo haya comprendido se preguntará como pude estar tanto tiempo sin usarlo. Es posible comprobar desde simples pings para comprobar el estado del anfitrión, hasta las estadísticas de uso de disco, estadísticas de memoria, DHCP, DNS, HTTP, temperatura en la room de las máquinas, actualizaciones de yum , carga de cpu, información SNMP de los anfitriones, y casi cualquier cosa que pueda imaginar.
En este artículo hemos dejado muchas cosas fuera pero usted debe haberse llevado la idea. Virtualmente, cualquier cosa que usted piense mantenerle el ojo arriba lo puede hacer a través de Nagios. Usted puede escribir sus propios plugins, o visitar el sitio Nagios Exchange que mencionamos anteriormente para buscar lo que necesite.
Algo más que nos gustaría mencionar es que la habilidad de configurar y mantener Nagios solamente a través de la interface web. Nagios no viene con add-ons pre-empaquetados para hacer esto, pero usted puede encontrar información para tres paquetes diferentes en: http://www.nagios.org/faqs/viewfaq.php?faq_id=183.
Si tiene algo que adicionar o si encuentra algo incorrecto, por favor avísenos para de esa forma mejorarlo.