Monitorizar dispositivos de red usando Nagios en Debian



ESTE DOCUMENTO ESTA ACTUALMENTE EN CONSTRUCCION

última modificación : Thursday 20 May 2010 15:43:19 (-0600 GMT)
quién está modificando : siddharta ( http://www.esdebian.org/user/31012 )

El mensaje de arriba lo eliminaré en cuanto haya terminado la elaboración del documento, por lo tanto agradeceré no realizar cambios (ni realizar comentarios para no ensuciar la Wiki) sino hasta que haya terminado, lo cual espero hacer lo antes posible escribiendo cada día. Gracias por la espera.

atte. Siddharta



LICENCIA

Este documento ha sido publicado originalmente en el sitio http://www.esdebian.org/ (en la sección Wiki > Redes > Monitorizar la red), y se rige mediante las declaraciones que se encuentran en los siguientes enlaces:

http://www.esdebian.org/wiki/licencia
http://www.esdebian.org/wiki/normas-wiki
http://www.gnu.org/copyleft/gpl.html


ÍNDICE

  1. Introducción
  2. Justificación
  3. Notas aclaratorias
  4. Requisitos previos
  5. Instalación
  6. Verificar la configuración
  7. Iniciar | Reiniciar | Detener Nagios
  8. Algunos directorios
  9. Configuración inicial
  10. Configuración de servicios y dispositivos


INTRODUCCIÓN

Nagios ( http://www.nagios.org/ ) es una aplicación creada por Ethan Galstad, la cual tiene como finalidad detectar, registrar, e informar sobre fallas en equipos y servicios de red. En Wikipedia se encuentra la siguiente definición:

Wikipedia escribió:

[...] Nagios es un sistema de monitorización de redes de código abierto ampliamente utilizado, que vigila los equipos (hardware) y servicios (software) que se especifiquen, alertando cuando el comportamiento de los mismos no sea el deseado. Entre sus características principales figuran la monitorización de servicios de red (SMTP, POP3, HTTP, SNMP...), la monitorización de los recursos de sistemas hardware (carga del procesador, uso de los discos, memoria, estado de los puertos...), independencia de sistemas operativos, posibilidad de monitorización remota mediante túneles SSL cifrados ó SSH, y la posibilidad de programar plugins específicos para nuevos sistemas. [...]

Nagios es un acrónimo recursivo para la expresión Nagios Ain't Gonna Insist On Sainthood, que significa "Nagios no insistirá en la santidad", haciendo alusión a su nombre original Netsaint, el cual tuvo que dejar de usarse.


JUSTIFICACIÓN

Nagios no es el único sistema ideado para monitorizar redes, pero es frecuente ver su nombre ocupando los primeros lugares en encuestas en sitios comunitarios, en revistas técnicas en línea, y en sitios personales. Nagios es altamente configurable debido a su manejo de plugins, y ello es apreciado por muchos administradores de redes. Dicha configuración se lleva a cabo mediante la edición de archivos de texto.

Sin embargo otros usuarios prefieren usar herramientas que sean configurables de manera visual, y por ello al final de este documento se mencionan otras aplicaciones similares a Nagios.


NOTAS ACLARATORIAS

Este documento no pretende indicar la manera correcta para configurar Nagios, sino que explica una forma de hacerlo en base a ciertas necesidades y en base a cierto entorno de red. Dichas características varían de usuario a usuario, y se pretende que este documento sea una guía para el lector, quien debe sentirse libre de experimentar por sí mismo en base a la documentación oficial. Al final de este documento se mencionan varios enlaces de referencias.


REQUISITOS PREVIOS

Nagios requiere un servidor web instalado en el mismo equipo, mediante el cual se podrá acceder a los elementos gráficos de la monitorización. Para fines de este documento, el servidor web apache2 es el que previamente se ha instalado en el equipo. Ninguna configuración ha sido necesaria para el servidor web, ya que Nagios configurará su propio entorno para apache2 durante su instalación.

Nagios no requiere de una interfaz gráfica para la configuración de los archivos ya que esta se realiza de manera textual, por lo tanto no es necesario el uso de un entorno de escritorio como Fluxbox, GNOME, o KDE; ni de editores de texto visuales como Mousepad, Kate, o GEdit. La configuración de Nagios puede hacerse en la consola utilizando editores como Emacs, VIM, o Nano.

Las versiones del software usado durante la redacción de este documento son:

Debian GNU/Linux = 5.0.4 (stable, lenny, en idioma inglés)
kernel Linux = 2.6.26-2-686
Nagios = 3.0.6-4~lenny2 (nagios3)
Apache = 2.2.9-10+lenny6 (apache2)


INSTALACIÓN

Para instalar el paquete nagios3, el cual se encuentra disponible en los repositorios oficiales de Debian, se ejecuta el comando siguiente:

# aptitude install nagios3

y el sistema indicará e instalará automáticamente Nagios y las dependencias necesarias (las que aquí se muestran son un ejemplo, puesto que pueden variar dependiendo de instalaciones previas en el sistema):


[...]
The following NEW packages will be installed:
apache2, apache2-utils{a} fping{a} libapr1{a} libaprutil1{a} libnet-snmp-perl{a} libpq5{a} libradius1{a} libradiusclient-ng2{a} nagios-images{a} nagios-plugins{a} nagios-plugins-basic{a} nagios-plugins-standard{a} nagios3 nagios3-common{a} nagios3-doc{a} qstat{a} radiusclient1{a} samba-common{a} smbclient{a} snmp{a}
0 packages upgraded, 21 newly installed, 0 to remove and 22 not upgraded.
Need to get 17.9MB of archives. After unpacking 47.3MB will be used.
[...]

Se observa que la descarga es de aproximadamente 18 MB, y la instalación ocupará aproximadamente 47 MB del disco duro. Obsérvese que también se ha resaltado con negritas el paquete apache2-utils, el cual se usará más tarde para agregar el usuario web de Nagios.

Una vez finalizada la instalación, la ruta del archivo binario se encuentra mediante el comando which:

# which nagios3

a lo que el sistema responde que el binario es: /usr/sbin/nagios3 .


VERIFICAR LA CONFIGURACIÓN

La configuración de Nagios se efectúa mediante la modificación y creación de archivos de texto, y si los archivos tienen errores entonces Nagios no podrá iniciar, quedando suspendida la monitorización de los dispositivos y servicios. Esta situación se verá reflejada en las estadísticas y por ende en la fiabilidad de las cifras que ellas arrojen, puesto que parecerá que todos los dispositivos y servicios habrán estado "caídos" durante el tiempo que se haya dedicado a encontrar y corregir los errores en los archivos de configuración.

Por ello la importancia de que después de realizar configuraciones y antes de iniciar/reiniciar Nagios se use el comando siguiente con el parámetro -v para verificar (verify) que la configuración sea correcta:

# nagios3 -v /etc/nagios3/nagios.cfg

Nagios no sólo verificará ese archivo, sino que también verificará aquéllos que se encuentren dentro del directorio /etc/nagios3/conf.d/ ya que este se encuentra declarado dentro del archivo que se indicó en el comando.

Si durante la verificación se detectara algún error entonces el proceso de verificación se detendrá de inmediato y mostrará un mensaje similar al siguiente, en el cual se mencionará el nombre de archivo y la línea que se deberá corregir:


Error: Unexpected token or statement in file '/etc/nagios3/conf.d/localhost_nagios2.cfg' on line 7.


Una vez corregido el error se debe recordar que la verificación no se completó, así que es imperante volver a ejecutarla ya que es posible que existan otros errores más adelante, por ejemplo:


Error: Invalid host object directive 'd'.
Error: Could not add object property in file '/etc/nagios3/conf.d/localhost_nagios2.cfg' on line 8.


Una vez que se hayan hecho las correcciones necesarias y la verificación haya comprobado que no existen errores, aparecerán las siguientes líneas al final de un mensaje:


Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check


Por lo tanto ya será posible iniciar/reiniciar Nagios.


INICIAR | REINICIAR | DETENER Nagios

Durante la instalación de Nagios el equipo se habrá configurado de tal manera que, en caso de que este tenga que ser reiniciado, Nagios se ejecutará automáticamente durante el arranque, método conocido como demonio. No obstante es necesario saber cómo iniciar/detener a Nagios de manera manual puesto que debe ser reiniciado cada vez que se hagan modificaciones a sus archivos de configuración, o cada vez que se agreguen nuevos dispositivos y servicios.

El archivo script que permite iniciar, reiniciar y detener Nagios se encuentra en la ruta /etc/init.d/ y se llama nagios3 . Dicho script debe ser ejecutado con privilegios de root.

Para conocer el estado actual de Nagios se usa el siguiente comando:

# /etc/init.d/nagios3 status

y las respuestas posibles son:

checking /usr/sbin/nagios3...done (running). ..................................... Nagios sí se está ejecutando.
checking /usr/sbin/nagios3...done (not running). ................................. Nagios no se está ejecutando.


Para iniciar Nagios se usa el comando:

# /etc/init.d/nagios3 start

y las respuestas posibles son:

Starting nagios3 monitoring daemon: nagios3 ...................................... Nagios se ha iniciado.

Starting nagios3 monitoring daemon: nagios3
already running! (warning). ...................................................... Nagios ya se estaba ejecutando.


Para reiniciar Nagios se usa el comando:

# /etc/init.d/nagios3 restart

y las respuestas posibles son:

Restarting nagios3 monitoring daemon: nagios3
Waiting for nagios3 daemon to die. ............................................... Nagios será detenido y volverá a iniciar.

Restarting nagios3 monitoring daemon: nagios3 .................................... Nagios no se estaba ejecutando y se iniciará.


Para detener Nagios se usa el comando:

# /etc/init.d/nagios3 stop

y las respuestas posibles son:

Stopping nagios3 monitoring daemon: nagios3
Waiting for nagios3 daemon to die. ............................................... Nagios será detenido

Stopping nagios3 monitoring daemon: nagios3
/sbin/start-stop-daemon: warning: failed to kill xxxxxx: No such process. ........ Nagios no se estaba ejecutando.


ALGUNOS DIRECTORIOS

Nagios utiliza archivos de configuración que se encuentran en distintos directorios a lo largo del sistema. A continuación se mencionan sólamente algunos de ellos, y más adelante se explican algunos archivos de configuración que existen dentro de dichos directorios:

/etc/apache2/conf.d/ ..................... Contiene un enlace simbólico al archivo de configuración que usa el servidor web.
/etc/init.d/ ............................. Contiene un script que inicia, reinicia y detiene el demonio de Nagios.
/etc/nagios3/ ............................ Contiene archivos de configuraciones globales.
/etc/nagios3/conf.d/ ..................... Contiene archivos de configuraciones específicas de los dispositivos y servicios monitorizados.
/etc/rc*.d/ .............................. Contienen enlaces simbólicos para el inicio y la detención de Nagios en los runlevels de Debian.
/usr/lib/nagios/plugins/ ................. Contiene los archivos binarios encargados de monitorizar protocolos (FTP, HTTP, SSH, etc.).
/usr/sbin/ ............................... Contiene el archivo binario de Nagios.
/usr/share/doc/nagios* ................... Contienen documentación y ejemplos sobre el uso de los plugins .
/usr/share/nagios/htdocs/ ................ Contiene los archivos .html utilizados por el servidor web.
/usr/share/nagios/htdocs/images/logos/ ... Contiene imágenes para identificar los dispositivos en un mapa.
/var/log/nagios3/ ........................ Contiene el registro de las alertas detectadas por Nagios.


CONFIGURACIÓN

En el directorio /etc/nagios3/ se encuentran los siguientes archivos de configuración de Nagios:

apache2.conf ............................. Contiene la configuración utilizada por el servidor web Apache.
cgi.cfg .................................. Contiene configuración de ciertas rutas y parámetros.
commands.cfg ............................. Contiene comandos predefinidos y/o personalizados por el usuario.
nagios.cfg ............................... Contiene la configuración principal.
resource.cfg ............................. Contiene información de variables y macros.

A continuación se explican algunas secciones de los archivos mencionados.



/etc/nagios3/apache2.conf


En dicho archivo se encuentra la siguiente línea, la cual indica en qué archivo se almacenará la cuenta de usuario y sus contraseña, para poder acceder a la interfaz web:


AuthUserFile /etc/nagios3/htpasswd.users


Por tanto en la terminal se usará el comando siguiente para crear el usuario nagiosadmin y su contraseña dentro de dicho archivo:

# htpasswd -c /etc/nagios3/htpasswd.users nagiosadmin

El comando htpasswd forma parte del paquete apache2-utils, y éste último debió instalarse juntamente con Nagios ya que es una de las varias dependencias. El parámetro -c (create) indica que el archivo se creará, luego se indica la ruta y nombre del archivo, y finalmente el usuario, el cual será nagiosadmin (en breve se explicará por qué). Al presionar Enter el sistema solicitará 2 veces la contraseña nueva:


New password:
Re-type new password:
Adding password for user nagiosadmin


Para comprobar el contenido del archivo creado puede usarse el comando siguiente:

# cat /etc/nagios3/htpasswd.users

y se mostrará un contenido similar al siguiente:


nagiosadmin:uQxrt8wuEUogw


en donde se puede apreciar el nombre de usuario, un signo de 2 puntos (:) que funge como separador, y la contraseña, la cual en realidad no es la que se introdujo puesto que se encuentra encriptada con el algoritmo MD5.



/etc/nagios3/cgi.cfg


Dentro de dicho archivo se encuentran las siguientes líneas (a lo largo de varias secciones), en las cuales se indica el usuario que tendrá acceso a distintos módulos en la interfaz web de Nagios:


authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin


en donde se observa que los permisos se otorgan al usuario nagiosadmin, y por ello se utilizó dicho usuario en los pasos anteriormente explicados.

En el mismo archivo se encuentran también las siguientes líneas, las cuales hacen referencia a la forma en la que se presentará un mapa que mostrará el estado de cada equipos monitorizados. El valor predeterminado es 4 (circular), pero en este tutorial se usará el valor 3 (balanced tree) para tener una vista más comprensiva (en forma de árbol) de los dispositivos, y sus "padres" e "hijos":


# 0 = User-defined coordinates
# 1 = Depth layers
# 2 = Collapsed tree
# 3 = Balanced tree
# 4 = Circular
# 5 = Circular (Marked Up)
default_statusmap_layout=3


En otra parte del archivo, la siguiente línea indica la ruta del comando ping, y cuántos paquetes se enviarán a los equipos monitorizados, siendo 5 el valor predeterminado:

ping_syntax=/bin/ping -n -U -c 5 $HOSTADDRESS$

Con los resultados obtenidos del comando ping Nagios obtendrá valores promedios y los usará para determinar el estado y la disponibilidad de un dispositivo.



/etc/nagios3/nagios.cfg


Dentro de dicho archivo se encuentra las siguientes líneas, en donde la última de ellas indica que la rotación de los registros se realizará de manera diaria (daily). Dicha configuración puede cambiarse, sin embargo se recomienda llevar el registro de manera diaria para mayor facilidad en la visualización de eventos pasados:


# LOG ROTATION METHOD
# This is the log rotation method that Nagios should use to rotate
# the main log file. Values are as follows..
# n = None - don't rotate the log
# h = Hourly rotation (top of the hour)
# d = Daily rotation (midnight every day)
# w = Weekly rotation (midnight on Saturday evening)
# m = Monthly rotation (midnight last day of month)
log_rotation_method=d


En la siguiente línea se indica la ruta en donde se almacenarán los registros anteriores de Nagios, los cuales se consultarán a través de la interfaz web, aunque también pueden revisarse de manera manual:


log_archive_path=/var/log/nagios3/archives



/etc/nagios3/commands.cfg


Dentro de dicho archivo se definirán comandos personalizados, es decir, comandos que cumplirán con necesidades particulares que Nagios no abarca de manera predeterminada. Por ejemplo, en el directorio /usr/lib/nagios/plugins/ se encuentran los plugins que Nagios utiliza para monitorizar servicios. Una rápida mirada dentro de dicho directorio mostrará que hay plugins diseñados para servicios específicos, por ejemplo:


check_dhcp
check_dns
check_http
check_ldap
check_mysql
check_smtp
check_ssh


Cada plugin está diseñado para monitorizar el servicio para el cual fue diseñado, y no puede usarse para monitorizar otro servicio para el cual no fue diseñado. Cada uno de los plugins tiene sus propios parámetros los cuales pueden ser consultados con --help, por ejemplo:

# /usr/lib/nagios/plugins/check_http --help

Si se mira con cuidado dentro de ese mismo directorio se observará que otros plugins en realidad son enlaces simbólicos (symbolic links) que apuntan hacia el plugin check_tcp :


check_clamd -> check_tcp
check_ftp -> check_tcp
check_imap -> check_tcp
check_jabber -> check_tcp
check_nntp -> check_tcp
check_nntps -> check_tcp
check_pop -> check_tcp
check_simap -> check_tcp
check_spop -> check_tcp
check_ssmtp -> check_tcp
check_udp -> check_tcp


Por lo anterior se deduce que el plugin check_tcp puede usarse de manera genérica para monitorizar servicios para los cuales no existe un plugin específico.

En este punto es importante que uno sepa qué servicios se desean monitorizar (y sus puertos asociados), para que de esta manera se pueda reconocer aquéllos servicios en la red que se desea monitorizar -servicios para los cuales no existan plugins específicos- y por lo tanto se proceda a definir los comandos personalizados que monitorizarán dichos servicios. Por mencionar 2 ejemplos: no existe un plugin específico para el servicio RDP (Remote Desktop Protocol), el cual habilita el puerto 3389 (TCP); tampoco existe un plugin específico para el servicio VNC (Virtual Network Computing), el cual habilita el puerto 5900 (TCP).

Así que (continuando con este tutorial, y como ejemplos para fines ilustrativos) se agregarán 2 comandos al final o al principio del archivo /etc/nagios3/commands.cfg . Dichos comandos se utilizarán más adelante para monitorizar aquéllos dispositivos que cuenten con los citados servicios de RDP y VNC, y se hará con el apoyo del plugin check_tcp :


#####################################################################################
# para comprobar el servicio RDP (Remote Desktop Protocol), en el puerto 3389

define command {
command_name check_rdp
command_line /usr/lib/nagios/plugins/check_tcp -H $HOSTADDRESS$ -p 3389
}

#####################################################################################
# para comprobar el servicio VNC (Virtual Network Computing), en el puerto 5900

define command {
command_name check_vnc
command_line /usr/lib/nagios/plugins/check_tcp -H $HOSTADDRESS$ -p 5900
}


Básicamente, se ha definido el nombre del comando y luego el comando en sí. En la línea del comando se ha usado el plugin check_tcp mencionado anteriormente, en donde el parámetro -H (host) y la variable $HOSTADDRESS$ indican a Nagios cuál equipo será monitorizado, y el parámetro -p (port) indica el puerto en el que se probará la conexión TCP.

Siguiendo los 2 ejemplos anteriores es posible agregar otros comandos personalizados si ya se ha determinado que no existen plugins específicos para ciertos servicios.


CONFIGURACIÓN DE SERVICIOS Y DISPOSITIVOS


Los dispositivos y servicios que se desean monitorizar se crean y configuran dentro del directorio /etc/nagios3/conf.d/; los archivos que a continuación se listan han sido creados creados durante la instalación inicial y contienen información que ha permitido el funcionamiento inicial de Nagios:

contacts_nagios2.cfg ..................... Contiene información de usuarios que recibirán avisos de alertas.
extinfo_nagios2.cfg ...................... Contiene información adicional para dispositivos y servicios.
generic-host_nagios2.cfg ................. Contiene información genérica de dispositivos.
generic-service_nagios2.cfg .............. Contiene información genérica de servicios.
host-gateway_nagios3.cfg ................. Contiene información el dispositivo puerta de enlace.
hostgroups_nagios2.cfg ................... Contiene información sobre grupos de dispositivos
localhost_nagios2.cfg .................... Contiene información sobre el equipo en donde está instalado Nagios
services_nagios2.cfg ..................... Contiene información sobre grupos de servicios.
timeperiods_nagios2.cfg .................. Contiene información sobre los períodos de notificaciones.

A continuación se explican más detalles sobre dichos archivos.



/etc/nagios3/contacts_nagios2.cfg





ESTO ES UN SEPARADOR

de aquí hacia abajo es donde estoy editando actualmente .......




ESTADOS / NOTIFICACIONES DE LOS DISPOSITIVOS Y SERVICIOS

d = Down, send notifications on a DOWN state
u = Up, send notifications on an UNREACHABLE state
r = Recovery, send notifications on recoveries (OK state)
f = Flapping, send notifications when the host starts and stops flapping
s = Scheduled, send notifications when scheduled downtime starts and ends
n = None, no host notifications will be sent out

###############################################################################
# contacts.cfg
###############################################################################

# In this simple config file, a single contact will receive all alerts.
 
define contact{
        contact_name                    root
        alias                           Root
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                           root@localhost
        }

###############################################################################
# CONTACT GROUPS
###############################################################################

# We only have one contact in this simple configuration file, so there is
# no need to create more than one contact group.

define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 root
        }


/etc/nagios3/extinfo_nagios2.cfg


##                                                                                                                                                                                     
## Extended Host and Service Information
                                                           
define hostextinfo{
        hostgroup_name   debian-servers
        notes            Debian GNU/Linux servers
#       notes_url        http://webserver.localhost.localdomain/hostinfo.pl?host=netware1
        icon_image       base/debian.png
        icon_image_alt   Debian GNU/Linux
        vrml_image       debian.png
        statusmap_image  base/debian.gd2
        }


/etc/nagios3/generic-host_nagios2.cfg


# Generic host definition template - This is NOT a real host, just a template!

define host{
        name                            generic-host    ; The name of this host template
        notifications_enabled           1       ; Host notifications are enabled
        event_handler_enabled           1       ; Host event handler is enabled
        flap_detection_enabled          1       ; Flap detection is enabled
        failure_prediction_enabled      1       ; Failure prediction 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
        check_command                   check-host-alive
        max_check_attempts              10
        notification_interval           0
        notification_period             24x7
        notification_options            d,u,r
        contact_groups                  admins
        register                        0       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
        }


/etc/nagios3/generic-service_nagios2.cfg


# generic service template definition
define service{
        name                            generic-service ; The 'name' of this service template
        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 (disabling this can lead to major performance problems)
        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
        failure_prediction_enabled      1       ; Failure prediction 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
        notification_interval           0               ; Only send notifications on status change by default.
        is_volatile                     0
        check_period                    24x7
        normal_check_interval           5
        retry_check_interval            1
        max_check_attempts              4
        notification_period             24x7
        notification_options            w,u,c,r
        contact_groups                  admins
        register                        0       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
        }


/etc/nagios3/host-gateway_nagios3.cfg


# a host definition for the gateway of the default route
define host {
        host_name   gateway
        alias       Default Gateway
        address     172.16.111.253
        use         generic-host
        }


/etc/nagios3/hostgroups_nagios2.cfg


# Some generic hostgroup definitions

# A simple wildcard hostgroup
define hostgroup {
        hostgroup_name  all
                alias           All Servers
                members         *
        }

# A list of your Debian GNU/Linux servers
define hostgroup {
        hostgroup_name  debian-servers
                alias           Debian GNU/Linux Servers
                members         localhost
        }

# A list of your web servers
define hostgroup {
        hostgroup_name  http-servers
                alias           HTTP servers
                members         localhost
        }

# A list of your ssh-accessible servers
define hostgroup {
        hostgroup_name  ssh-servers
                alias           SSH servers
                members         localhost
        }

# nagios doesn't like monitoring hosts without services, so this is
# a group for devices that have no other "services" monitorable
# (like routers w/out snmp for example)
define hostgroup {
        hostgroup_name  ping-servers
                alias           Pingable servers
                members         gateway
        }


/etc/nagios3/localhost_nagios2.cfg


# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in nagios2-common_services.cfg may also apply.
#

define host{
        use                     generic-host            ; Name of host template to use
        host_name               localhost
        alias                   localhost
        address                 127.0.0.1
        }

# Define a service to check the disk space of the root partition
# on the local machine.  Warning if < 20% free, critical if
# < 10% free space on partition.

define service{
        use                             generic-service         ; Name of service template to use
        host_name                       localhost
        service_description             Disk Space
        check_command                   check_all_disks!20%!10%
        }

# Define a service to check the number of currently logged in
# users on the local machine.  Warning if > 20 users, critical
# if > 50 users.

define service{
        use                             generic-service         ; Name of service template to use
        host_name                       localhost
        service_description             Current Users
        check_command                   check_users!20!50
        }

# Define a service to check the number of currently running procs
# on the local machine.  Warning if > 250 processes, critical if
# > 400 processes.

define service{
        use                             generic-service         ; Name of service template to use
        host_name                       localhost
        service_description             Total Processes
                check_command                   check_procs!250!400
        }

# Define a service to check the load on the local machine.

define service{
        use                             generic-service         ; Name of service template to use
        host_name                       localhost
        service_description             Current Load
                check_command                   check_load!5.0!4.0!3.0!10.0!6.0!4.0
        }


/etc/nagios3/services_nagios2.cfg


# check that web services are running
define service {
        hostgroup_name                  http-servers
        service_description             HTTP
        check_command                   check_http
        use                             generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
}

# check that ssh services are running
define service {
        hostgroup_name                  ssh-servers
        service_description             SSH
        check_command                   check_ssh
        use                             generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
}

# check that ping-only hosts are up
define service {
        hostgroup_name                  ping-servers
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
        use                             generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
}


/etc/nagios3/timeperiods_nagios2.cfg


###############################################################################
# timeperiods.cfg
###############################################################################

# This defines a timeperiod where all times are valid for checks,
# notifications, etc.  The classic "24x7" support nightmare. :-)

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
        }

# Here is a slightly friendlier period during work hours
define timeperiod{
        timeperiod_name workhours
        alias           Standard Work Hours
        monday          09:00-17:00
        tuesday         09:00-17:00
        wednesday       09:00-17:00
        thursday        09:00-17:00
        friday          09:00-17:00
        }

# The complement of workhours
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
        }

# This one is a favorite: never :)
define timeperiod{
        timeperiod_name never
        alias           Never
        }

# end of file

USO DE LA INTERFAZ WEB

Para acceder a la interfaz web de Nagios en el navegador se escribirá la dirección http://__________/nagios3/ , en donde el espacio subrayado se debe sustituir por la palabra localhost, ó la dirección IP (ó nombre de dominio) del equipo donde está instalado Nagios.

El servidor web Apache ya sabe que /nagios3/ es la ruta virtual mediante la cual se mostrarán los documentos html. Dichos documentos se encuentran en realidad en el directorio /usr/share/nagios3/htdocs ya que en el archivo /etc/nagios3/apache2.conf se encuentra la siguiente línea:

Alias /nagios3 /usr/share/nagios3/htdocs

user: nagiosadmin
password: ******

REGISTROS

# cat /var/log/nagios3/nagios.log | grep -i critical

comentar sobre el mensaje al iniciar sesión en consola

You have new mail in /var/mail/sistemas

una vez leídos los mensajes
~/mbox < mail ó mutt

ALGUNAS SUGERENCIAS E IDEAS

script que hice para buscar puertos específicos:

~/Scripts/nagios/scan.sh
chmod +x ~/Scripts/nagios/scan.sh

#!/bin/bash
# uso: ./scan.sh <DIRECCION IP | NOMBRE DE DOMINIO>

cd /usr/lib/nagios/plugins/

clear

echo "********** Buscando puertos predeterminados en "$1" **********"
echo                                                                

echo "Revisando puerto 21 (FTP)"
./check_tcp -H $1 -p 21        
echo                           

echo "Revisando puerto 22 (SSH)"
./check_tcp -H $1 -p 22        
echo                           

echo "Revisando puerto 23 (TELNET)"
./check_tcp -H $1 -p 23
echo

echo "Revisando puerto 25 (SMTP)"
./check_tcp -H $1 -p 25
echo

echo "Revisando puerto 53 (DNS)"
./check_tcp -H $1 -p 53
echo

echo "Revisando puerto 80 (HTTP)"
./check_tcp -H $1 -p 80
echo

echo "Revisando puerto 110 (POP)"
./check_tcp -H $1 -p 110
echo

echo "Revisando puerto 143 (IMAP)"
./check_tcp -H $1 -p 143
echo

echo "Revisando puerto 389 (LDAP)"
./check_tcp -H $1 -p 389
echo

echo "Revisando puerto 443 (HTTPS)"
./check_tcp -H $1 -p 443
echo

echo "Revisando puerto 1433 (MS SQL)"
./check_tcp -H $1 -p 1433
echo

echo "Revisando puerto 3306 (MySQL)"
./check_tcp -H $1 -p 3306
echo

echo "Revisando puerto 3389 (RDP)"
./check_tcp -H $1 -p 3389
echo

echo "Revisando puerto 5800 (VNC HTTP)"
./check_tcp -H $1 -p 5800
echo

echo "Revisando puerto 5900 (VNC)"
./check_tcp -H $1 -p 5900
echo

cd -
exit

comentar la otra opción que es usar nmap (zenmap)
instalar un servicio de correo SMTP en el mismo equipo de Nagios ...
instalar el servidor en el nivel más alto posible de la red,
comentar sobre la opción de desactivar mensajes de correo
comentar sobre la opción de usar un servidor web propio en caso de afectación del servidor de correo predeterminado (o de la LAN)

SITIOS RECOMENDADOS (documentación, lecturas, fuentes, referencias, etc.)

Nagios: http://www.nagios.org/
Nagios documentation: http://www.nagios.org/documentation
Nagios en Wikipedia: http://es.wikipedia.org/wiki/Nagios
Nagios plugins: http://nagiosplugins.org/ y http://nagiosplugins.org/man
Nagios Community: http://community.nagios.org/

Algoritmo de encriptación MD5: http://es.wikipedia.org/wiki/MD5

Números de puertos: http://es.wikipedia.org/wiki/Anexo:N%C3%BAmeros_de_puerto

IANA (Well Known Ports, Registered Ports, Dynamic and/or Private Ports): http://www.iana.org/assignments/port-numbers

How to install Nagios3 on a Debian Lenny Server: http://www.heuers.org/wp/?p=344


OTRAS APLICACIONES similares a Nagios (o basadas en Nagios)

Icinga: http://www.icinga.org/about/
OpenNMS: http://www.opennms.org/wiki/Main_Page
Pandora FMS: http://pandorafms.org/
PRTG Network Monitor (MS Windows): http://www.paessler.com/prtg/
Zenoss: http://community.zenoss.org/community/documentation (Zenoss Core)


PENDIENTES POR HACER en este documento

configurar / limitar los mensajes de correo
configurar plugin para mostrar gráficas
crear una cuenta de usuario adicional a la de nagiosadmin, con permisos limitados
habilitar comandos para que usuario nagiosadmin pueda usarlos vía web



MOVER LO SIGUIENTE A LOS COMENTARIOS, en realidad no necesita estar aquí .

Como dato informativo únicamente, el equipo en donde se encuentra la instalación actual (y utilizada para la redacción de este documento) es un Dell Optiplex GX280: procesador Pentium 4 @ 800 MHz, 512 MB de memoria RAM, disco duro de 80 GB. El sistema de monitorización está en ambiente productivo, alertando eventos de 36 equipos y 152 servicios.