En la jaula de un geek

Los README son para los cobardes. Sé valiente. Ejecuta el programa.

«

»

Jul 20

Instalar y configurar Nagios en OpenSuSE Leap 42.2

Cuantos más servidores y servicios se tienen, más difícil es comprobar que todos estén funcionando correctamente, para ello hay aplicaciones que permiten revisar el estado de estos y avisar si alguno falla.

Uno de los más antiguos es Nagios, desde su web puedes ver rápidamente el estado de toda la red, tanto servidores como servicios, si alguno de estos falla, envía un e-mail para avisar de ello. También dispone de todo tipo de módulos nuevos e incluso puedes programar módulos nuevos, así que tienes total libertad para crear aquello que necesites.

0- Previos

Nagios dispone de la versión libre original y una nueva de pago, viendo el precio, yo elegiré la versión original, llamada Nagios Core.

Desde el repositorio de cada distribución Linux se puede encontrar tanto el server como el client, estos facilitan enormemente la instalación, aun así, yo compilaré el original para tener la última versión.

He de avisar que utilizaré la instalación normal, pero después me cargaré toda la configuración por defecto (o casi casi) y la haré a mi estilo. La documentación oficial de Nagios y la configuración por defecto no me gustan en absoluto, me parecen caóticas, así que ajustaré todo tal como creo que debería funcionar.

Estos pasos son para la instalación en OpenSuSE, pero con ligeros cambios de dependencias y servicios funcionarán en cualquier otro.

El servidor de Nagios Core requiere de un Apache o similar, yo utilizaré el Apache como ya expliqué en su día.

1- Instalar servidor

Para funcionar, se necesitan 3 piezas: Nagios Core que contiene el servicio y la web, Nagios Plugins que contiene los componentes que realizan las pruebas y NRPE que se encarga de la conexión entre el servidor y los diferentes clientes, existen diferentes conectores pero yo me quedaré con NRPE por ser el que más conozco ya que tiene sus años.

Empezamos descargando y descomprimiendo todo lo necesario.

Ya que vamos a compilar, necesitamos todas las herramientas para ello y también las de certificados para el NRPE.

Todo Nagios funcionará desde su propio usuario y Apache también necesita acceso a los ficheros, así que hay que crear el usuario y asignar los grupos necesarios.

Instalar Nagios Core

Con todos los requisitos terminados, empezamos a compilar e instalar los servicios del core.

Colocamos las herramientas en su sitio y asignamos los permisos correctos.

Comprobamos que la configuración por defecto sea correcta.

Creamos el servicio.

Con los siguientes datos.

Terminamos activando los servicios de autoarranque. Revisar desde Yast que realmente se ha encendido.

Instalar Nagios Plugins

Lo siguiente será configurar los plugins, sin ellos, el Core devolverá errores al no conectar a nada.

Ahora reiniciamos el servicio para que empiece a funcionar acorde la configuración por defecto.

Configurar Virtual Host de Apache

Con estos pasos nos habrá dejado un fichero de ejemplo que encontraremos en la configuración de Apache.

Podemos ajustarlo según nuestra versión de Apache o, en mi caso, borrarlo y construir un Virtual Host para Nagios.

La web de Nagios requiere autorización mediante Apache para funcionar correctamente, podemos asociar esa autorización a un fichero o cualquier otro modo que permite Apache, estos pasos son para utilizar el fichero.

Con ello ya solo falta crear un usuario en el fichero y reiniciar Apache.

Ya podremos acceder desde la siguiente URL.

Si todo ha funcionado bien, veremos el servidor y varios servicios de este siendo escaneados, ya solo nos queda el NRPE para activar la conexión a otros servidores.

Instalar NRPE

Puede funcionar como servicio independiente o dentro del servicio XINET, por defecto ya está configurado en el XINET de OpenSuSE, así que simplemente lo compilamos e instalamos el servicio.

Con esto ya tenemos el servidor instalado y configurado para funcionar por defecto, pero aún queda mucho trabajo para ajustarlo todo.

2- Envío de e-mails

Empezamos una de las configuraciones del servidor, el envío de e-mails y la lista de contactos.

Lo primero que se necesita es tener Postfix configurado tal como se explica en este post.

Para confirmar que funcionará el mismo proceso que ejecuta Nagios, enviamos un e-mail imitándole.

Lo siguiente es configurar los contactos y grupos, para ello dejamos una copia de la configuración por defecto y editamos el fichero de contactos.

Este contiene comentarios y un ejemplo de contacto y grupo.

Partiendo de este ejemplo, indicamos la configuración acorde a cada contacto,

Los valores para las notificaciones de servicio son las siguientes:

  • w: WARNING
  • u: UNKNOWN
  • c: CRITICAL
  • r: RECOVERY
  • f: Notificar cuando el servicio deja de cambiar de estado continuamente (FLAPPING)
  • n: No notificar

Y para hosts:

  • d: Host DOWN
  • u: UNREACHABLE
  • r: RECOVERY
  • f: Notificar cuando el host deja de cambiar de estado continuamente (FLAPPING)
  • s: Enviar notificación cuando empieza o acaba un parón controlado del host o servicio
  • n: No notificar

En el grupo de contactos, en member añadimos cada contacto (contact_name) separado por coma.

Lo siguiente es configurar el e-mail que se utilizará para hacer el envío.

Los dos primeros comandos serán notify-host-by-email y notify-service-by-email, al final de su command_line añadimos un nuevo argumento al final para especificar el from del e-mail.

Una vez terminado, reiniciamos el Nagios y ya estará configurada esta parte.

3- Instalar cliente en OpenSuSE

Cada servidor que será revisado requiere instalar el cliente para que Nagios le pueda consultar utilizando NRPE, estos son más simples de instalar que el servidor y además comparten gran parte.

Descargamos y descomprimimos lo necesario.

Instalamos las herramientas de compilación y certificados.

Añadimos el usuario y grupo.

Y empezamos instalando los plugins.

Terminamos asignando los permisos.

El siguiente paso es instalar el NRPE.

Para poderlo ejecutar se tiene que configurar previamente.

Básicamente necesitamos cambiar dos valores para activarlo e indicar la IP del servidor de Nagios para permitirle acceder.

Este requiere de otro fichero donde se configurarán los diferentes servicios que vamos a utilizar, por ahora lo creamos ya que es necesario para iniciar el servicio.

Abrimos el puerto TCP5666 y reiniciamos el servicio. (Esto no es suficiente para que inicie automáticamente, para ello habrá que activarlo desde Yast)

Si todo ha funcionado, el siguiente comando nos dará la versión del NRPE instalado.

Después de abrir el puerto TCP/5666, desde el servidor podemos usar el mismo comando hacia el nuevo cliente para confirmar que tiene acceso.

4- Configurar servicios del cliente

Lo primero que hay que entender es que hay dos tipos de servicios:

  • Servicios remotos: estos se ejecutan desde el servidor hacia el cliente. No necesitan instalar nada en el cliente, así se puede gestionar remotamente algunos servicios de un router, switch gestionable o impresora. Por ejemplo, para revisar si un puerto está abierto.
  • Servicios locales: estos se ejecutan desde el cliente, así que es necesario que el servidor ejecute el servicio NRPE para que ejecute localmente el test y devuelva la respuesta al servidor, estos deben estar configurado en el NRPE del cliente. Por ejemplo, el espacio libre en disco.

Ya que los servicios remotos no requieren ser configurados desde el cliente, en este punto nos centraremos en los servicios locales.

Editamos el fichero de configuración de servicios.

Para configurar un servicio, primero debemos tener ese servicio, por defecto tenemos todos los que instalamos con el Nagios Plugin, pero podemos instalar otros desde la comunidad oficial o crear nuestros propios plugins manualmente.

Para cada servicio hay que revisar que parámetros necesitan, pero casi todos ellos contienen 2 argumentos obligatorios:

  • w: Valor para advertir que el servicio puede no estar funcionando bien o estar en problemas. Por ejemplo, se accede a una URL de Apache pero responde con un mensaje de no acceso.
  • c: El servicio se considera caído o en gran riesgo. Por ejemplo: casi no queda espacio en disco disponible.

Este es un ejemplo para activar el servicio de comprobación de espacio libre en disco para la partición raíz (/). Si disponemos de más de un disco montado en diferentes particiones deberíamos tener un test para cada uno de ellos.

Este fichero es consultado cada vez que se recibe una petición así que no es necesario reiniciar el servicio.

Los clientes por defecto no tienen ningún ejemplo, pero el servidor sí, partiendo de este obtenemos los siguientes servicios locales que podrían componer la base de todos nuestros servidores cliente además de cualquier otro servicio específico que necesitemos.

5- Configurar servicios del server

Esta es la parte más importante y complicada de todo el proceso: configurar el servidor acorde a nuestras necesidades.

La base de toda la configuración se encuentre en este fichero:

Este contiene las llamadas al resto de ficheros (la mayoría en la carpeta objects) y podemos crear nuevos ficheros para separar aún más la configuración.

La lista de todos los parámetros se encuentra en la documentación oficial.

Todos los ficheros son ejemplos de la configuración por defecto, esto quiere decir que funcionan con el sistema local y están explicados, pero no significa que sean óptimos para un sistema real, así que todos ellos pueden ser reconstruidos bajo nuestras necesidades.

En cualquier caso, yo voy a indicar los mínimos necesarios para encender los servicios, pero dejo una pequeña guía para entender qué hacen a grandes rasgos y de ahí decidir qué hacer:

  • commands: Contiene la lista de todos los servicios que puede utilizar Nagios, empezando por los obligatorios de envío de e-mail (notify-host-by-email y notify-service-by-email) y la comprobación de host funcionando (check-host-alive) que no deja de ser un ping. A partir de aquí, podemos crear tantos servicios como queramos, pero hay que recordar que los servicios locales solo funcionaran hacia el servidor, todos los demás deben ir por NRPE hacia el cliente.
  • contacts: Ya lo hemos visto anteriormente, contiene los contactos y los grupos de estos contactos.
  • localhost: Sirve como ejemplo de configuración para un Linux, este se habilita por defecto, pero muchos de sus servicios son locales, así que no se puede copiar tal cual para el resto de servidores Linux.
  • printer: Ejemplo para configurar impresoras que estén conectadas a la red.
  • switch: Igual que el anterior, sirve de ejemplo para comprobar un switch gestionable (uno que tenga IP propia), también puede servir de base para routers.
  • templates: Este junto a commands es uno de los archivos más importantes y complejos, contiene toda la información sobre las plantillas a utilizar por el resto de ficheros, la configuración básica de los contactos, servicios, hosts, etc. Todo utiliza una plantilla y se pueden sobrescribir los valores por defecto, incluso una plantilla puede proceder de otra plantilla.
  • timeperiods: Contiene la lista de todos los tiempos definidos, por ejemplo, para indicar la lista en que un contacto recibirá e-mails en vez de recibirlo incluso estando de vacaciones, durmiendo o simplemente de festivo, aunque no recibir los e-mails no te salvará de que te echen la culpa por no arreglarlo igualmente.
  • windows: Igual que la versión localhost, este contiene un ejemplo para servidores Windows.

commands.cfg

Necesitamos un nuevo servicio que nos permita utilizar el NRPE, este tendrá de argumento el nombre configurado en el cliente, así que desde este llamaremos a todos los servicios locales del cliente.

groups.cfg

Cada fichero de host contiene la lista del grupo, pero esto se convierte en un caos cuanto más grande es nuestra red, así que creamos un fichero nuevo llamado groups.cfg para crear todos los grupos y en este iremos añadiendo cada host.

Para añadir un grupo de host creamos la siguiente fila y en members vamos indicando cada servidor.

En cambio, en los grupos de servicios es mejor definir el grupo y dejar la asignación hacia el grupo en el servicio o en la template del servicio.

Para este caso podemos configurar un servicio concreto asignado a este grupo.

Hay que añadirlo a los ficheros que llama el nagios.cfg o no será utilizado.

nuevo host

Para crear un nuevo host simplemente añadimos un fichero con la extensión cfg y definimos la información del host y todos sus servicios. Aquellos servicios que sean locales tendrán que ser definidos previamente en el cliente y utilizaremos el servicio NRPE para llamarlos.

En este ejemplo se utiliza el servicio NRPE para llamar al test de espacio en disco.

Hay que añadirlo a los ficheros que llama el nagios.cfg o no será utilizado.

Final

Activar y configurar Nagios requiere mucho esfuerzo y dedicación, pero al final se compensa al saber que se están monitorizando continuamente todos los dispositivos y servicios importantes, si alguno de ellos falla, recibiremos el aviso de Nagios en vez de recibirlo de alguien que se ha dado cuenta que el servicio murió hace días y ahora se requiere urgentemente.

Con sus warnings también obtenemos la posibilidad de saber si algo está bajo riesgo y prepararnos para ello. ¿Cuántas veces un servidor se ha quedado sin espacio en el peor momento y no lo habíamos tenido en cuenta? Con Nagios esto no volverá a pasar.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar