You are on page 1of 5

TALLER PRÁCTICO

Nagios 3

Monitorización de equipos
con Nagios 3 Jorge López
jlopez@iberprensa.com

N
agios es una herramienta almacenamiento, y recursos tipo el es­ miento de varios elementos a la vez
GPL que permite llevar un pacio en disco o la cantidad de memo­ con un mínimo de modificaciones.
completo control de la dis- ria utilizada. Mediante el uso del com­  Grabación y rotación automática
ponibilidad de los servicios, proce- plemento NRPE también es posible de los estados de los elementos
sos y recursos de un equipo, infor- monitorizar los recursos de un equipo monitorizados en archivos logs, su
mando al administrador por dife- remoto. contenido lo leemos desde cualquier
rentes medios como correo elec-  Envío de notificaciones por correo editor de texto o mediante la interfaz
trónico o SMS de su bloqueo o electrónico o SMS, según su grave­ web.
carga excesiva. Estudiamos en dad, podemos definir que se envíen co­  Asignación de roles para los usua-
este taller práctico las caracterís- mo simples advertencias o marcados rios, permitiendo dividir las tareas en
ticas de esta utilidad y su configu- como urgentes. También se manda un distintos usuarios. Por ejemplo, unos
ración vía interfaz web. mensaje informando de la corrección encargados del estado de los servicios
Surgido con el nombre NetSaint y del problema originado, por ejemplo al y otros de los recursos del equipo, a los
transformado en el proyecto Nagios resolverse automáticamente. que se envían diferentes mensajes.
(http://www.nagios.org), se trata de una  Interfaz web integrada, para ver los  Ampliación de funciones mediante
herramienta para monitorizar los equipos estados actuales de monitorizado, su el uso de complementos, permitien­
y servicios de una red. Mediante el uso de histórico, gráficos de la topología de red do el control de nuevos servicios como
distintos comandos, supervisa hasta el mí­ para revisar si algún nodo está caído, los gestores de bases de datos MySQL
nimo detalle de sus estados, informando a listado mensajes enviados y generar in­ o PostgreSQL. Para programarlos, po­
los administradores en caso de detectar­ formes de disponibilidad. demos utilizar el lenguaje que prefira­
se cualquier tipo de problema.  Creación de eventos, para ejecutar­ mos, ya que Nagios funciona como una
Con respecto a versiones anteriores, los al producirse determinadas situacio­ pasarela transparente para enviar men­
Nagios 3 está dividido en diferentes archi­ nes, por ejemplo reiniciar algún servicio sajes con las salidas de los programas.
vos para la configuración de los dispositi­ cuando la carga de los recursos del
vos y contactos, haciendo más sencilla su equipo sea muy alta.
administración. Además incluye numero­
sas optimizaciones al poder monitorizar
múltiples elementos, generar un mayor
número de estadísticas para la interfaz
web y agregar nuevas funciones en el in­
térprete de Perl integrado.

Accedemos al contenido del archivo log generado.

Listado de contactos creados. REQUISITOS


Para poder utilizar todas las prestaciones
 Agrupación de los elementos mo- que ofrece Nagios debemos instalar el
nitorizados, como los de servidores servidor web Apache 2, el compilador
web distintos, cambiando sus avisos y GCC y las librerías GD. Estas últimas son
alertas según el grupo al que pertenez­ necesarias para crear de manera dinámi­
Página oficial del proyecto Nagios. can. Esto permite una administración ca las imágenes generadas en los infor­
más sencilla, al cambiar el comporta­ mes.

CARACTERÍSTICAS
 Monitorizado de servicios de red, La interfaz web integrada en Nagios genera informes con
por ejemplo HTTP, SMTP o POP3, dis­
positivos como impresoras o redes de el estado actual de los elementos monitorizados
www.studiopress.es Número 95 31
TALLER PRÁCTICO Nagios 3

INSTALACIÓN  PASO 7
Como último paso nos faltaría copiar el ar­
 PASO 1 chivo de configuración de Nagios para el
Primero necesitamos un usuario junto a servidor web, para lo cual entramos en el
su respectivo grupo, que será el utilizado directorio nagios-3.0.3 y ejecutamos:
por Nagios para funcionar. Podemos
crearlos desde las herramientas provistas # make install-webconf
por nuestra distribución, o utilizar el co­
mando: Para bloquear los intentos de lectura
de las páginas con la información y esta­
# /usr/sbin/adduser nagios dísticas generadas, creamos un nuevo
Listado de módulos disponibles que se pueden utilizar. usuario, de nombre nagios_admin, y su
con los que añadimos el nuevo usuario y contraseña con el comando:
escribimos su contraseña.
Para crear el grupo, ejecutamos:  PASO 5 # htpasswd -c /usr/local/nagios
Al finalizar, identificados como root, ejecu­ /etc/htpasswd.users nagios_admin
# /usr/sbin/groupadd nagiosgroup tamos cuatro comandos más para su ins­
# /usr/sbin/usermod talación: reiniciando Apache para habilitar el nuevo
-G nagiosgroup nagios directorio web creado, ejecutando uno de
# /usr/sbin/usermod # make install los dos siguientes comandos según la dis­
-G nagiosgroup www-data # make install-init tribución que utilicemos:
# make install-config
con los dos últimos comandos añadimos # make install-commandmode # /etc/init.d/apache2 reload
al grupo el usuario creado nagios y el uti­ # /etc/init.d/httpd reload
lizado por Apache, www-data. Este se­ copiando los archivos, librerías, ejecuta­
gundo puede variar en algunas instala­ bles y archivos de configuración, y asig­
ciones, estando definido en los archivos nando los permisos adecuados.
de configuración del servidor web.
 PASO 6
 PASO 2 A continuación, procedemos a instalar los
Entramos a la página: http://www.nagios. complementos descargados, descompri­
org/download y descargamos los archi­ miendo su paquete:
vos de los dos primeros desplegables,
Get Nagios y Get Plugins, utilizando en $ tar xvzf
ambos el botón “Go”, y seleccionado para nagios-plugins-1.4.12.tar.gz
este último el paquete de nombre nagios-
plugins. El primero contiene el programa y dentro de este directorio:
en sí y el segundo los complementos
esenciales. $ cd nagios-plugins-1.4.12 Solicitando un usuario y su clave para entrar en Nagios.

 PASO 3 compilamos e instalamos, indicando el CONFIGURACIÓN


Después de descomprimir el paquete de usuario y grupo creados. Nagios divide en varios archivos las opcio­
Nagios: nes de configuración, utilizando cada uno
$ ./configure --with-nagios- para definir diferentes parámetros de mo­
$ tar xvzf nagios-3.0.3.tar.gz user=nagios --with-nagios- nitorizado. Así, encontramos dentro del di­
group=nagiosgroup rectorio /usr/local/nagios/etc/objects
y acceder a su contenido: $ make ocho archivos; de los cuales hay tres que
# make install se recomienda no modificar, a otro le de­
$ cd nagios-3.0.3 bemos añadir al menos un correo electró­
nico y otros cuatro que eliminamos o
creamos el archivo makefile, indicando el adaptamos a nuestras necesidades, ya
grupo antes creado: que las opciones que almacenan sirven
solo de ejemplo.
$ ./configure --with-comand- Los tres primeros, que inicialmente no
group= nagiosgroup modificamos, definen los comandos, pa­
rámetros de tiempo y plantillas para los
equipos y dispositivos utilizados en otros
 PASO 4 archivos de configuración:
Invocamos su compilación.  commands.cfg: son todos los co­
mandos de control instalados junto a
$ make all Nagios. Algunos de estos comandos son
Creando el nuevo grupo y un usuario asociado. el acceso por red de un equipo, su espa­

32 Número 95 www.studiopress.es
Nagios 3 TALLER PRÁCTICO

cio en disco, la memoria swap libre, los contactos; linux-server, servidor GNU/ en caso de generarse un estado de alerta.
usuarios conectados o la disponibilidad de Linux; windows-server, servidor Windows; Para añadir un contacto utilizamos las lí­
servicios como HTTP, FTP, SSH, SMTP o generic-printer, dispositivo de impresión neas:
POP. Estos comandos son proporciona­ en red; generic-switch, switchs o routers;
dos a los equipos para definir los controles y generic-service, común para los servi­ define contact{
que queremos asignar. cios. A su vez, las cinco primeras depen­ contact_name nagiosadmin
Por ejemplo, el control de acceso por den de otra plantilla de nombre generic- use generic-contact
ping tiene la siguiente sintaxis: host. alias Administrador Nagios
Para que un elemento que va a ser email admin@correo.com
define command{ monitorizado pueda hacer uso de los pa­ }
comand_name check_ping rámetros de una plantilla (ver Listado 1),
command_line por ejemplo linux-server, añadimos en sus donde utilizamos los parámetros: contact_
$USER1$/check_ping parámetros de configuración la línea name, nombre del contacto; use, plantilla
-H $HOSTADRESS$ -w $ARG1$ del contacto, definido en el archivo tem-
-c $ARG2$ -p 5 use linux-server plates.cfg; alias, nombre completo del
} usuario para identificarlo fácilmente; y
 timeperiods.cfg: períodos de tiempo email, dirección de correo a la que enviar
donde el valor de command_name es utili­ en que los comandos definidos en com- las alertas. Para cada nuevo contacto,
zado para asignar a un equipo este con­ mand.cfg van a ejecutarse, y configura­ añadimos estos mismos datos pero cam­
trol, y los parámetros de command_line ción de cuándo se enviarán los mensajes biando como mínimo su nombre y correo
también serán asignados automáticamen­ de alerta a los contactos de contacts.cfg. electrónico.
te con otros archivos CFG. Admite la definición de franjas temporales Para simplificar su configuración hace­
Los comandos disponibles, a los que por día y hora, por ejemplo definiendo mos uso de los grupos, que unen más de
sumaremos los provistos por otros com­ alertas por período laboral para los proce­ un contacto, por ejemplo:
plementos, son suficientes para monitori­ sos menos importantes o las 24 horas pa­
zar cualquier equipo o red, incluyendo sus ra los críticos. define contactgroup {
recursos y servicios. Para crear un nuevo período de tiem­ contactgroup_name
 templates.cfg: colección de plantillas po, por ejemplo con la franja horaria de administradores
para ser utilizadas en contactos, equipos y Lunes a Jueves de 9:00 a 19:00, y los alias Administradores Nagios
servicios. Definen los períodos de tiempo, Viernes de 9:00 a 15:00, añadimos las lí­ members nagiosadmin
comandos de monitorizado o frecuencia neas: }
de reintentos en caso de error, entre otros
muchos parámetros. El uso de estas plan­ define timeperiod{ siendo: contactgroup_name, el nombre
tillas permite aplicar un conjunto común timeperiod_name hora_trabajo del nuevo grupo que asignamos a los ele­
de opciones a los elementos que se van a alias Hora de trabajo mentos monitorizados; alias, descripción
controlar, haciendo más sencillo su cam­ monday 09:00-19:00 del grupo; y members, listado de contac­
bio. tuesday 09:00-19:00 tos separados por comas que constituyen
El número de plantillas contenidas es wednesday 09:00-19:00 el grupo.
suficiente para casi cualquier equipo y thursday 09:00-19:00 Los tres últimos archivos solo nos sir­
red, definida cada una por la opción na- friday 09:00-15:00 ven como ejemplos, ya que definen los
me. Encontramos seis plantillas de espe­ } equipos, dispositivos, topología de red y
cial utilidad: generic-contact, para los los comandos, plantillas y contactos aso­
Dentro de este archivo, encontramos ciados:
otros ejemplos para añadir períodos de  localhost.cfg: controla los procesos y
Listado 1. Opciones de la plantilla tiempo distintos, incluyendo filtros según servicios del equipo en el que Nagios
Linux-server el día y mes del año. está ejecutándose.
Aunque podemos añadir las configura­  printer.cfg: ejemplos de control de im­
define host{ ciones de estos tres ficheros en un solo presoras.
name linux-server archivo, por ejemplo opciones.cfg, e inser­  switch.cfg: monitorizado de dispositi­
use generic-host tarlo dentro de nagios.cfg, es preferible vos de red, como routers y switches.
check_period 24x7 conservar esta separación de ficheros, ya  windows.cfg: monitorizado de equi­
check_interval 5 que facilita su modificación al no mezclar pos y servicios Windows.
retry_interval 1 parámetros con distintas finalidades.
max_check_attempts 10 El cuarto fichero solo lo modificamos El uso de estos archivos se realiza
check_command check-host-alive para añadir al menos un contacto válido, desde el fichero nagios.cfg, mediante las
notification_period workhours junto a su nombre y dirección de correo líneas que comienzan por cfg_file. Así, si
notification_interval 120 electrónico: queremos obviar el uso de alguno, por
notification_options d,u,r  contacts.cfg: contiene cada uno de ejemplo este último para equipos
contact_groups admins los contactos con su nombre y dirección Windows, añadimos a su inicio el carácter
register 0 de correo electrónico. A cada elemento “#”. En la configuración predeterminada
} monitorizado asignamos al menos un están desactivados: switch.cfg, printer.cfg
contacto, al cual se le remitirá un mensaje y windows.cfg.

www.studiopress.es Número 95 33
TALLER PRÁCTICO Nagios 3

define service{ Si el resultado de este es satisfactorio,


use local-service mostrará los mensajes:
host_name localhost
service_description Total Warnings: 0
Current Load Total Errors: 0
check_command
check_local_load!5.0,4.0!10.0 reiniciamos el servicio:
}
y el de acceso a nivel ping para # /etc/init.d/nagios restart
el servidor.
define service{
Opciones de control de un servidor web. use local-service
host_name servidor1
Aunque podemos utilizar estos archi­ service_description PING
vos como base para monitorizar los equi­ check_command
pos, y redes modificándolos según nues­ check_ping!100.0,20%!500.0,60%
tras necesidades, vamos a crear un archivo }
de configuración nuevo, de nombre mired.
cfg. Únicamente controlará un equipo prin­ aparte de la opción host_name antes des­
cipal, en el que está instalado Nagios, y un crita, hemos añadido cuatro nuevas: use,
servidor situado en la misma red local. nombre de la plantilla, de nuevo utilizamos
Primero creamos en el directorio /usr/ una predeterminada; service_description,
local/nagios/etc/objects un nuevo archivo la descripción que queremos dar al servi­ Comprobando la nueva configuración de Nagios.
de nombre mired.cfg, inicialmente vacío. cio; y check_command, con el comando a
Lo añadimos junto al resto de opciones de ejecutar para monitorizar. En esta última, INTERFAZ WEB
configuración insertando en el fichero na- indicamos el nombre de los comandos Para acceder a la interfaz web de Nagios,
gios.cfg la línea: disponibles en el archivo commands.cfg y abrimos un navegador e introducimos en
los valores de advertencia y emergencia. la barra de URL la dirección:
cfg_file=/usr/local/nagios/etc/ Así con la línea
objects/mired.cfg http://localhost/nagios
check_local_load!5.0,4.0!10.0
Dentro de este archivo, mired.cfg, in­ se nos pedirá el usuario y su clave que
sertamos los equipos que vamos a moni­ definimos que al llegar a la carga 4.0 ó 5.0 creamos al principio con el comando
torizar y sus servicios. Primero utilizamos se lance un mensaje de advertencia, y al htpasswd.
la opción host, para definir los equipos: alcanzar el valor 10.0 sea de alerta. Desde el menú situado en la parte iz­
Otros comandos de monitorizado, co­ quierda de la página accedemos a las di­
define host{ mo los de HTTP o SSH, no poseen niveles ferentes estadísticas generadas por
use linux-server de advertencia, quedando la definición de Nagios, así como a su estado actual.
host_name localhost su control como: Los enlaces más importantes por la in­
alias localhost formación que ofrecen, son los siguientes:
address 127.0.0.1 define service{  Tactical overview: un completo resu­
} use local-service men de todos los servicios y equipos en
define host{ host_name servidor1 el momento actual. Informando de los
use linux-server service_description HTTP alertas críticas y advertencias, caídas y
host_name servidor1 check_command check_http de aquellos elementos que no tengan
alias Servidor 1 } problemas. Su principal utilidad es ver en
address 192.168.0.5 pocos segundos el estado completo de
} que solo informa de si están o no activos. los elementos monitorizados, incluyendo
Similares líneas las podemos utilizar una sección de título Network Health con
donde hacemos uso de cuatro opciones para el resto de comandos, cuya sintaxis dos barras para indicar su salud comple­
para cada equipo: use, nombre de la plan­ podemos ver en el archivo commands. ta con colores –verde todo correcto–,
tilla, indicando la predeterminada linux- cfg. –amarillo– con problemas, o rojo para
server; host_name, el nombre con el que Con cada cambio realizado, para acti­ alertas. Todos los textos de información
identificarlo; alias, descripción del equipo; varlo necesitamos ejecutar dos coman­ son enlaces a través de los cuales pode­
y address, dirección IP, utilizando localhost dos. Primero: mos acceder rápidamente a una infor­
para referirse al propio ordenador. mación más completa.
Cada uno de estos equipos lo relacio­ $ /usr/local/nagios/bin/nagios  Service Detail y Host Detail: respec­
namos con uno o más servicios, indicando -v /usr/local/nagios/etc tivamente son los listados de servicios y
en la opción host_name, el mismo nombre /nagios.cfg equipos monitorizados. Contienen su
antes definido. nombre, estado actual, fecha y hora de
Por ejemplo, añadimos el control de la para comprobar la configuración, indicán­ la última y próxima comprobación y la
carga a localhost: donos los errores que encuentre. salida del comando de monitorización.

34 Número 95 www.studiopress.es
Nagios 3 TALLER PRÁCTICO

Finalmente, escogemos el período de fe­ A continuación, añadimos al archivo


chas de la disponibilidad del equipo y pre­ commands.cfg el nuevo comando:
sionamos “Create Availability Report!” para
obtener una nueva página con el detalla­ define command{
do informe. command_name check_tftp
Todos los datos de estas páginas, así command_line
como los nombres de los elementos, son $USER1$/check_tftp.pl
tomados a partir de los archivos de confi­ $HOSTADDRESS$ directorio/archivo
guración antes explicados. }

reemplazando directorio/archivo por la ru­


Resumen de los elementos monitorizados. ta al fichero con el que monitorizar el envío
por TFTP.
Si alguno de estos nodos está en esta­ Para añadir este control a un equipo,
do crítico o con advertencia, presiona­ insertamos en su archivo de configuración
mos sobre su nombre para desplegar correspondiente las líneas:
información más detallada.
 Status Map: información sobre el es­ define service{
tado de la red con los equipos y sus use local-service
servicios. Podemos ir situándonos so­ host_name servidor2
bre cada uno de sus nombres. Repre­ service_description TFTP
senta gráficamente la topología de la Informe histórico del estado del servidor web. check_command check_tftp
red, y mostrará también aquellos orde­ }
nadores que no estén accesibles. AÑADIENDO COMPLEMENTOS
 Service Problems y Host Problems: La instalación realizada de Nagios solo está
todos los servicios y equipos que pre­ limitada por el hecho de que no es posible
sentan estado de error, incluyendo en­ monitorizar equipos remotos, también por
laces similares a los mostrados en las algunos servicios no soportados y porque
páginas Detail antes vistas. Las adver­ el número de dispositivos es reducido.
tencias definidas en los comandos se Pero gracias a la API provista con la propia
representan con color amarillo y las aplicación es posible añadir nuevos contro­
alertas críticas en rojo. les. De hecho podemos encontrar un gran
 Reporting: un conjunto de opciones número de ellos ya desarrollados por otros
orientadas a generar informes con el usuarios en la página http://www.nagio-
historial de disponibilidad de equipos y sexchange.org. Los controles están clasifi­
servicios. cados según su cometido, como redes, Configuración de varios comandos de monitorizado.
hardware, software o sistemas operativos.
Por ejemplo, si queremos obtener el Por ejemplo, para instalar el comando siendo servidor2 el equipo que vamos a
histórico del equipo localhost, presiona­ de monitorizado TFTP descargamos su monitorizar, que está definido en otro ar­
mos el enlace Availability, seleccionamos archivo PL, que copiamos al directorio chivo de configuración como hemos visto
Host(s) y elegimos la opción localhost. /usr/local/nagios/libexec. antes. n

www.studiopress.es Número 95 35

You might also like