[FrontPage] [TitleIndex] [WordIndex

This is a read-only archived version of wiki.centos.org

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

Referencias

Paquetes

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

ArtWork/WikiDesign/icon-admonition-info.png

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.


2023-09-11 07:23