Monitorización de equipos
con Nagios 3 Jorge López
jlopez@iberprensa.com
31Número 95www.studiopress.es
TALLER PRÁCTICO
Nag...
TALLER PRÁCTICO Nagios 3
32 Número 95 www.studiopress.es
INSTALACIÓN
 PASO 1
Primero necesitamos un usuario junto a
su re...
TALLER PRÁCTICONagios 3
33Número 95www.studiopress.es
cio en disco, la memoria swap libre, los
usuarios conectados o la di...
TALLER PRÁCTICO Nagios 3
34 Número 95 www.studiopress.es
Aunque podemos utilizar estos archi­
vos como base para monitoriz...
TALLER PRÁCTICONagios 3
35Número 95www.studiopress.es
Si alguno de estos nodos está en esta­
do crítico o con advertencia,...
Upcoming SlideShare
Loading in …5
×

Manual Nagios

9,417 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,417
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
490
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Manual Nagios

  1. 1. Monitorización de equipos con Nagios 3 Jorge López jlopez@iberprensa.com 31Número 95www.studiopress.es TALLER PRÁCTICO Nagios 3 N agios es una herramienta GPL que permite llevar un completo control de la dis- ponibilidad de los servicios, proce- sos y recursos de un equipo, infor- mando al administrador por dife- rentes medios como correo elec- trónico o SMS de su bloqueo o carga excesiva. Estudiamos en este taller práctico las caracterís- ticas de esta utilidad y su configu- ración vía interfaz web. Surgido con el nombre NetSaint y transformado en el proyecto Nagios (http://www.nagios.org), se trata de una herramienta para monitorizar los equipos y servicios de una red. Mediante el uso de distintos comandos, supervisa hasta el mí­ nimo detalle de sus estados, informando a los administradores en caso de detectar­ se cualquier tipo de problema. Con respecto a versiones anteriores, Nagios 3 está dividido en diferentes archi­ vos para la configuración de los dispositi­ vos y contactos, haciendo más sencilla su 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. CARACTERÍSTICAS  Monitorizado de servicios de red, por ejemplo HTTP, SMTP o POP3, dis­ positivos como impresoras o redes de almacenamiento, y recursos tipo el es­ pacio en disco o la cantidad de memo­ ria utilizada. Mediante el uso del com­ plemento NRPE también es posible monitorizar los recursos de un equipo remoto.  Envío de notificaciones por correo electrónico o SMS, según su grave­ dad, podemos definir que se envíen co­ mo simples advertencias o marcados como urgentes. También se manda un mensaje informando de la corrección del problema originado, por ejemplo al resolverse automáticamente.  Interfaz web integrada, para ver los estados actuales de monitorizado, su histórico, gráficos de la topología de red para revisar si algún nodo está caído, listado mensajes enviados y generar in­ formes de disponibilidad.  Creación de eventos, para ejecutar­ los al producirse determinadas situacio­ nes, por ejemplo reiniciar algún servicio cuando la carga de los recursos del equipo sea muy alta.  Agrupación de los elementos mo- nitorizados, como los de servidores web distintos, cambiando sus avisos y alertas según el grupo al que pertenez­ can. Esto permite una administración más sencilla, al cambiar el comporta­ miento de varios elementos a la vez con un mínimo de modificaciones.  Grabación y rotación automática de los estados de los elementos monitorizados en archivos logs, su contenido lo leemos desde cualquier editor de texto o mediante la interfaz web.  Asignación de roles para los usua- rios, permitiendo dividir las tareas en distintos usuarios. Por ejemplo, unos encargados del estado de los servicios y otros de los recursos del equipo, a los que se envían diferentes mensajes.  Ampliación de funciones mediante el uso de complementos, permitien­ do el control de nuevos servicios como los gestores de bases de datos MySQL o PostgreSQL. Para programarlos, po­ demos utilizar el lenguaje que prefira­ mos, ya que Nagios funciona como una pasarela transparente para enviar men­ sajes con las salidas de los programas. REQUISITOS Para poder utilizar todas las prestaciones que ofrece Nagios debemos instalar el servidor web Apache 2, el compilador GCC y las librerías GD. Estas últimas son necesarias para crear de manera dinámi­ ca las imágenes generadas en los infor­ mes. La interfaz web integrada en Nagios genera informes con el estado actual de los elementos monitorizados Página oficial del proyecto Nagios. Listado de contactos creados. Accedemos al contenido del archivo log generado.
  2. 2. TALLER PRÁCTICO Nagios 3 32 Número 95 www.studiopress.es INSTALACIÓN  PASO 1 Primero necesitamos un usuario junto a su respectivo grupo, que será el utilizado por Nagios para funcionar. Podemos crearlos desde las herramientas provistas por nuestra distribución, o utilizar el co­ mando: # /usr/sbin/adduser nagios con los que añadimos el nuevo usuario y escribimos su contraseña. Para crear el grupo, ejecutamos: # /usr/sbin/groupadd nagiosgroup # /usr/sbin/usermod -G nagiosgroup nagios # /usr/sbin/usermod -G nagiosgroup www-data con los dos últimos comandos añadimos al grupo el usuario creado nagios y el uti­ lizado por Apache, www-data. Este se­ gundo puede variar en algunas instala­ ciones, estando definido en los archivos de configuración del servidor web.  PASO 2 Entramos a la página: http://www.nagios. org/download y descargamos los archi­ vos de los dos primeros desplegables, Get Nagios y Get Plugins, utilizando en ambos el botón “Go”, y seleccionado para este último el paquete de nombre nagios- plugins. El primero contiene el programa en sí y el segundo los complementos esenciales.  PASO 3 Después de descomprimir el paquete de Nagios: $ tar xvzf nagios-3.0.3.tar.gz y acceder a su contenido: $ cd nagios-3.0.3 creamos el archivo makefile, indicando el grupo antes creado: $ ./configure --with-comand- group= nagiosgroup  PASO 4 Invocamos su compilación. $ make all  PASO 5 Al finalizar, identificados como root, ejecu­ tamos cuatro comandos más para su ins­ talación: # make install # make install-init # make install-config # make install-commandmode copiando los archivos, librerías, ejecuta­ bles y archivos de configuración, y asig­ nando los permisos adecuados.  PASO 6 A continuación, procedemos a instalar los complementos descargados, descompri­ miendo su paquete: $ tar xvzf nagios-plugins-1.4.12.tar.gz y dentro de este directorio: $ cd nagios-plugins-1.4.12 compilamos e instalamos, indicando el usuario y grupo creados. $ ./configure --with-nagios- user=nagios --with-nagios- group=nagiosgroup $ make # make install  PASO 7 Como último paso nos faltaría copiar el ar­ chivo de configuración de Nagios para el servidor web, para lo cual entramos en el directorio nagios-3.0.3 y ejecutamos: # make install-webconf Para bloquear los intentos de lectura de las páginas con la información y esta­ dísticas generadas, creamos un nuevo usuario, de nombre nagios_admin, y su contraseña con el comando: # htpasswd -c /usr/local/nagios /etc/htpasswd.users nagios_admin reiniciando Apache para habilitar el nuevo directorio web creado, ejecutando uno de los dos siguientes comandos según la dis­ tribución que utilicemos: # /etc/init.d/apache2 reload # /etc/init.d/httpd reload CONFIGURACIÓN Nagios divide en varios archivos las opcio­ nes de configuración, utilizando cada uno para definir diferentes parámetros de mo­ nitorizado. Así, encontramos dentro del di­ rectorio /usr/local/nagios/etc/objects ocho archivos; de los cuales hay tres que se recomienda no modificar, a otro le de­ bemos añadir al menos un correo electró­ nico y otros cuatro que eliminamos o adaptamos a nuestras necesidades, ya que las opciones que almacenan sirven solo de ejemplo. Los tres primeros, que inicialmente no modificamos, definen los comandos, pa­ rámetros de tiempo y plantillas para los equipos y dispositivos utilizados en otros archivos de configuración:  commands.cfg: son todos los co­ mandos de control instalados junto a Nagios. Algunos de estos comandos son el acceso por red de un equipo, su espa­ Listado de módulos disponibles que se pueden utilizar. Creando el nuevo grupo y un usuario asociado. Solicitando un usuario y su clave para entrar en Nagios.
  3. 3. TALLER PRÁCTICONagios 3 33Número 95www.studiopress.es cio en disco, la memoria swap libre, los usuarios conectados o la disponibilidad de servicios como HTTP, FTP, SSH, SMTP o POP. Estos comandos son proporciona­ dos a los equipos para definir los controles que queremos asignar. Por ejemplo, el control de acceso por ping tiene la siguiente sintaxis: define command{ comand_name check_ping command_line $USER1$/check_ping -H $HOSTADRESS$ -w $ARG1$ -c $ARG2$ -p 5 } donde el valor de command_name es utili­ zado para asignar a un equipo este con­ trol, y los parámetros de command_line también serán asignados automáticamen­ te con otros archivos CFG. Los comandos disponibles, a los que sumaremos los provistos por otros com­ plementos, son suficientes para monitori­ zar cualquier equipo o red, incluyendo sus recursos y servicios.  templates.cfg: colección de plantillas para ser utilizadas en contactos, equipos y servicios. Definen los períodos de tiempo, comandos de monitorizado o frecuencia de reintentos en caso de error, entre otros muchos parámetros. El uso de estas plan­ tillas permite aplicar un conjunto común de opciones a los elementos que se van a controlar, haciendo más sencillo su cam­ bio. El número de plantillas contenidas es suficiente para casi cualquier equipo y red, definida cada una por la opción na- me. Encontramos seis plantillas de espe­ cial utilidad: generic-contact, para los contactos; linux-server, servidor GNU/ Linux; windows-server, servidor Windows; generic-printer, dispositivo de impresión en red; generic-switch, switchs o routers; y generic-service, común para los servi­ cios. A su vez, las cinco primeras depen­ den de otra plantilla de nombre generic- host. Para que un elemento que va a ser monitorizado pueda hacer uso de los pa­ rámetros de una plantilla (ver Listado 1), por ejemplo linux-server, añadimos en sus parámetros de configuración la línea use linux-server  timeperiods.cfg: períodos de tiempo en que los comandos definidos en com- mand.cfg van a ejecutarse, y configura­ ción de cuándo se enviarán los mensajes de alerta a los contactos de contacts.cfg. Admite la definición de franjas temporales por día y hora, por ejemplo definiendo alertas por período laboral para los proce­ sos menos importantes o las 24 horas pa­ ra los críticos. Para crear un nuevo período de tiem­ po, por ejemplo con la franja horaria de Lunes a Jueves de 9:00 a 19:00, y los Viernes de 9:00 a 15:00, añadimos las lí­ neas: define timeperiod{ timeperiod_name hora_trabajo alias Hora de trabajo monday 09:00-19:00 tuesday 09:00-19:00 wednesday 09:00-19:00 thursday 09:00-19:00 friday 09:00-15:00 } Dentro de este archivo, encontramos otros ejemplos para añadir períodos de tiempo distintos, incluyendo filtros según el día y mes del año. Aunque podemos añadir las configura­ ciones de estos tres ficheros en un solo archivo, por ejemplo opciones.cfg, e inser­ tarlo dentro de nagios.cfg, es preferible conservar esta separación de ficheros, ya que facilita su modificación al no mezclar parámetros con distintas finalidades. El cuarto fichero solo lo modificamos para añadir al menos un contacto válido, junto a su nombre y dirección de correo electrónico:  contacts.cfg: contiene cada uno de los contactos con su nombre y dirección de correo electrónico. A cada elemento monitorizado asignamos al menos un contacto, al cual se le remitirá un mensaje en caso de generarse un estado de alerta. Para añadir un contacto utilizamos las lí­ neas: define contact{ contact_name nagiosadmin use generic-contact alias Administrador Nagios email admin@correo.com } donde utilizamos los parámetros: contact_ name, nombre del contacto; use, plantilla del contacto, definido en el archivo tem- plates.cfg; alias, nombre completo del usuario para identificarlo fácilmente; y email, dirección de correo a la que enviar las alertas. Para cada nuevo contacto, añadimos estos mismos datos pero cam­ biando como mínimo su nombre y correo electrónico. Para simplificar su configuración hace­ mos uso de los grupos, que unen más de un contacto, por ejemplo: define contactgroup { contactgroup_name administradores alias Administradores Nagios members nagiosadmin } siendo: contactgroup_name, el nombre del nuevo grupo que asignamos a los ele­ mentos monitorizados; alias, descripción del grupo; y members, listado de contac­ tos separados por comas que constituyen el grupo. Los tres últimos archivos solo nos sir­ ven como ejemplos, ya que definen los equipos, dispositivos, topología de red y los comandos, plantillas y contactos aso­ ciados:  localhost.cfg: controla los procesos y servicios del equipo en el que Nagios está ejecutándose.  printer.cfg: ejemplos de control de im­ presoras.  switch.cfg: monitorizado de dispositi­ vos de red, como routers y switches.  windows.cfg: monitorizado de equi­ pos y servicios Windows. El uso de estos archivos se realiza desde el fichero nagios.cfg, mediante las líneas que comienzan por cfg_file. Así, si queremos obviar el uso de alguno, por ejemplo este último para equipos Windows, añadimos a su inicio el carácter “#”. En la configuración predeterminada están desactivados: switch.cfg, printer.cfg y windows.cfg. define host{ name linux-server use generic-host check_period 24x7 check_interval 5 retry_interval 1 max_check_attempts 10 check_command check-host-alive notification_period workhours notification_interval 120 notification_options d,u,r contact_groups admins register 0 } Listado 1. Opciones de la plantilla Linux-server
  4. 4. TALLER PRÁCTICO Nagios 3 34 Número 95 www.studiopress.es Aunque podemos utilizar estos archi­ vos como base para monitorizar los equi­ pos, y redes modificándolos según nues­ tras necesidades, vamos a crear un archivo de configuración nuevo, de nombre mired. cfg. Únicamente controlará un equipo prin­ cipal, en el que está instalado Nagios, y un servidor situado en la misma red local. Primero creamos en el directorio /usr/ local/nagios/etc/objects un nuevo archivo de nombre mired.cfg, inicialmente vacío. Lo añadimos junto al resto de opciones de configuración insertando en el fichero na- gios.cfg la línea: cfg_file=/usr/local/nagios/etc/ objects/mired.cfg Dentro de este archivo, mired.cfg, in­ sertamos los equipos que vamos a moni­ torizar y sus servicios. Primero utilizamos la opción host, para definir los equipos: define host{ use linux-server host_name localhost alias localhost address 127.0.0.1 } define host{ use linux-server host_name servidor1 alias Servidor 1 address 192.168.0.5 } donde hacemos uso de cuatro opciones para cada equipo: use, nombre de la plan­ tilla, indicando la predeterminada linux- server; host_name, el nombre con el que identificarlo; alias, descripción del equipo; y address, dirección IP, utilizando localhost para referirse al propio ordenador. Cada uno de estos equipos lo relacio­ namos con uno o más servicios, indicando en la opción host_name, el mismo nombre antes definido. Por ejemplo, añadimos el control de la carga a localhost: define service{ use local-service host_name localhost service_description Current Load check_command check_local_load!5.0,4.0!10.0 } y el de acceso a nivel ping para el servidor. define service{ use local-service host_name servidor1 service_description PING check_command check_ping!100.0,20%!500.0,60% } aparte de la opción host_name antes des­ crita, hemos añadido cuatro nuevas: use, nombre de la plantilla, de nuevo utilizamos una predeterminada; service_description, la descripción que queremos dar al servi­ cio; y check_command, con el comando a ejecutar para monitorizar. En esta última, indicamos el nombre de los comandos disponibles en el archivo commands.cfg y los valores de advertencia y emergencia. Así con la línea check_local_load!5.0,4.0!10.0 definimos que al llegar a la carga 4.0 ó 5.0 se lance un mensaje de advertencia, y al alcanzar el valor 10.0 sea de alerta. Otros comandos de monitorizado, co­ mo los de HTTP o SSH, no poseen niveles de advertencia, quedando la definición de su control como: define service{ use local-service host_name servidor1 service_description HTTP check_command check_http } que solo informa de si están o no activos. Similares líneas las podemos utilizar para el resto de comandos, cuya sintaxis podemos ver en el archivo commands. cfg. Con cada cambio realizado, para acti­ varlo necesitamos ejecutar dos coman­ dos. Primero: $ /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc /nagios.cfg para comprobar la configuración, indicán­ donos los errores que encuentre. Si el resultado de este es satisfactorio, mostrará los mensajes: Total Warnings: 0 Total Errors: 0 reiniciamos el servicio: # /etc/init.d/nagios restart INTERFAZ WEB Para acceder a la interfaz web de Nagios, abrimos un navegador e introducimos en la barra de URL la dirección: http://localhost/nagios se nos pedirá el usuario y su clave que creamos al principio con el comando htpasswd. Desde el menú situado en la parte iz­ quierda de la página accedemos a las di­ ferentes estadísticas generadas por Nagios, así como a su estado actual. Los enlaces más importantes por la in­ formación que ofrecen, son los siguientes:  Tactical overview: un completo resu­ men de todos los servicios y equipos en el momento actual. Informando de los alertas críticas y advertencias, caídas y de aquellos elementos que no tengan problemas. Su principal utilidad es ver en pocos segundos el estado completo de los elementos monitorizados, incluyendo una sección de título Network Health con dos barras para indicar su salud comple­ ta con colores –verde todo correcto–, –amarillo– con problemas, o rojo para alertas. Todos los textos de información son enlaces a través de los cuales pode­ mos acceder rápidamente a una infor­ mación más completa.  Service Detail y Host Detail: respec­ tivamente son los listados de servicios y equipos monitorizados. Contienen su nombre, estado actual, fecha y hora de la última y próxima comprobación y la salida del comando de monitorización. Opciones de control de un servidor web. Comprobando la nueva configuración de Nagios.
  5. 5. TALLER PRÁCTICONagios 3 35Número 95www.studiopress.es Si alguno de estos nodos está en esta­ do crítico o con advertencia, presiona­ mos sobre su nombre para desplegar información más detallada.  Status Map: información sobre el es­ tado de la red con los equipos y sus servicios. Podemos ir situándonos so­ bre cada uno de sus nombres. Repre­ senta gráficamente la topología de la red, y mostrará también aquellos orde­ nadores que no estén accesibles.  Service Problems y Host Problems: todos los servicios y equipos que pre­ sentan estado de error, incluyendo en­ laces similares a los mostrados en las páginas Detail antes vistas. Las adver­ tencias definidas en los comandos se representan con color amarillo y las alertas críticas en rojo.  Reporting: un conjunto de opciones orientadas a generar informes con el historial de disponibilidad de equipos y servicios. Por ejemplo, si queremos obtener el histórico del equipo localhost, presiona­ mos el enlace Availability, seleccionamos Host(s) y elegimos la opción localhost. Finalmente, escogemos el período de fe­ chas de la disponibilidad del equipo y pre­ sionamos “Create Availability Report!” para obtener una nueva página con el detalla­ do informe. Todos los datos de estas páginas, así como los nombres de los elementos, son tomados a partir de los archivos de confi­ guración antes explicados. AÑADIENDO COMPLEMENTOS La instalación realizada de Nagios solo está limitada por el hecho de que no es posible monitorizar equipos remotos, también por algunos servicios no soportados y porque el número de dispositivos es reducido. Pero gracias a la API provista con la propia aplicación es posible añadir nuevos contro­ les. De hecho podemos encontrar un gran número de ellos ya desarrollados por otros usuarios en la página http://www.nagio- sexchange.org. Los controles están clasifi­ cados según su cometido, como redes, hardware, software o sistemas operativos. Por ejemplo, para instalar el comando de monitorizado TFTP descargamos su archivo PL, que copiamos al directorio /usr/local/nagios/libexec. A continuación, añadimos al archivo commands.cfg el nuevo comando: define command{ command_name check_tftp command_line $USER1$/check_tftp.pl $HOSTADDRESS$ directorio/archivo } reemplazando directorio/archivo por la ru­ ta al fichero con el que monitorizar el envío por TFTP. Para añadir este control a un equipo, insertamos en su archivo de configuración correspondiente las líneas: define service{ use local-service host_name servidor2 service_description TFTP check_command check_tftp } siendo servidor2 el equipo que vamos a monitorizar, que está definido en otro ar­ chivo de configuración como hemos visto antes. n Resumen de los elementos monitorizados. Informe histórico del estado del servidor web. Configuración de varios comandos de monitorizado.

×