Nagios: añadir nuevo host

6 Julio 2011 at 22:16 by Adrián Pérez

Nagios
Nagios tiene todo un seguido de ficheros de configuración de objetos, donde se definen entre otros, los elementos a monitorizar (servidores, routers, impresoras, etc.) así como los servicios de cada elemento. Estos ficheros, están relacionados entre sí, y de hecho, se puede (y se recomienda) que así sea, con tal de re-aprovechar lo máximo posible las características comunes, en forma de templates.

Así pues, si se quiere añadir un nuevo elemento (por ejemplo un servidor) para ser monitorizado por Nagios, primeramente deberemos revisar el archivo templates.cfg, el cual contiene las plantillas con las definiciones comunes que podremos usar, para en este caso, dar de alta un nuevo host. Por ejemplo, se podrá incluir (si no existe ya) un template para dar de alta servidores, que contenga las definiciones comunes (o más comunes), con tal de ahorrar escribir siempre lo mismo en el momento del alta de los servidores en Nagios.

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

define host{
name server ; The name of this host template
use generic-host ; This template inherits other values from the generic-host template
check_period 24x7 ; By default, Linux hosts are checked round the clock
check_interval 5 ; Actively check the host every 5 minutes
retry_interval 1 ; Schedule host check retries at 1 minute intervals
max_check_attempts 10 ; Check each Linux host 10 times (max)
check_command check-host-alive ; Default command to check Linux hosts
notification_period workhours ; Admins hate to be woken up, so we only notify during the day
; Note that the notification_period variable is being overridden from
; the value that is inherited from the generic-host template!
notification_interval 120 ; Resend notifications every 2 hours
notification_options d,u,r ; Only send notifications for specific host states
contact_groups admins ; Notifications get sent to the admins by default
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}

En la definición anterior, "name" indica el nombre del template, "use" indica que esta definición está heredando los datos de "generic-host", que es otro template definido en templates.cfg (con lo cual, los parámetros no definidos en este template "server" que estén definidos en "generic-host", también se estarán definiendo para este template "server"). Por último, comentar que el parámetro "register", deberá estar a 0, para indicarle a Nagios que esta definición no se tiene que registrar en Nagios como un elemento, si no que únicamente es una definición que se usará (o no) en el momento de incluir nuevos elementos que sí deberán aparecer en Nagios (por defecto, si no se incluye nada, register estará a 1).

Una vez tenemos definida la plantilla para dar de alta nuevos hosts del tipo servidor, deberemos modificar el fichero de configuración "hosts.cfg" para dar de alta el nuevo servidor, incluyéndo los parámetros propios del servidor, que no se han incluido en la plantilla "server" o que tienen valores diferentes para este host:

define host{
use server ; Name of host template to use
; This host definition will inherit all variables that are defined
; in (or inherited by) the linux-server host template definition.
host_name http001
alias WebServer
address 200.100.0.200
notification_interval 30

}

Con esto, y después de reiniciar el servicio de Nagios, aparecerá el host http001 en el apartado "hosts" en el interfaz web de administración Nagios. Sin embargo, no aparecerá en el apartado "services", puesto que no tiene ningún servicio asociado, y por tanto no se le estará controlando por ejemplo, el espacio en disco, o los servicios importantes de la máquina.

En el fichero de configuración "services.cfg" se definen los servicios, los cuales se pueden asociar directamente a grupos de máquinas (hostgroup), los cuales pasarán a tener monitorizado el servicio definido.

Ejemplo de servicio definido para verificar el tamaño de la raíz del disco, y asociado al grupo de máquinas "basic-services", en "services.cfg":

define service {
use local-service
hostgroup_name basic-services
service_description Disk Root Usage
check_command check_remote_disk!20%!10%!/
}

Ejemplo de definición de "hostgroup" donde se incluyen las máquinas que usarán el servicio definido anteriormente, configurado en "hosts.cfg":

define hostgroup {
hostgroup_name basic-services
alias Basic Monitoring
members http001,http002,bbdd001

}

De esta forma, y tras el reinicio del servicio Nagios, se empezará a monitorizar el tamaño en del directorio raíz del servidor http001.

NOTA: Si no se ha realizado ya, es posible que sea necesario:

a) Configurar una clave ssh para que el usuario de Nagios ("nagios" por defecto) pueda conectar por ssh con el servidor a monitorizar. Puedes ver cómo hacerlo aquí.

b) Copiar el directorio libexec, el cual contiene los comandos a ejecutar, en el servidor a monitorizar (si no se ha copiado ya, aparecerá un error con la ruta exacta donde debería estar este directorio, en Nagios, al empezar a monitorizar el servidor).