Introducción a NEMS Linux: Parte 3 - Configurando monitores de servicio en NEMS Linux

Esta es la tercera parte de una serie en la que presentamos NEMS Linux: el servidor de monitorización empresarial Nagios para dispositivos ODROID. Si no has leído las dos primeras partes (números de octubre y noviembre de ODROID Magazine), empieza desde el principio ya las lecciones se van complementado con las siguientes. Mi intención con estos artículos siempre ha sido la de presentarte a NEMS Linux de forma que te proporcione conocimientos útiles y los pongan en práctica de inmediato. No tienen la intención de presentarse como simple documentación, sino más bien artículos técnicos que te proporcionen ideas sobre cómo puedes usar NEMS Linux en tu entorno. Sin embargo, este mes nos convertiremos en unos auténticos frikis juntos, ya que incluyo dos ejercicios clave que pueden resultarte útiles para monitorizar los activos de tu red con NEMS Linux.

En los ejercicios de este mes, aprenderás lo necesario para configurar NEMS Linux y poder realizar lo siguiente:

  • Indicar si tu sitio web está activo y notificar si ha estado inactivo durante más de 10 minutos: monitorizar el tuyo propio, el de tus clientes o cualquier sitio web http/https para conocer el tiempo de actividad o el tiempo de respuesta con lentitud.
  • Monitorizar el estado de un puerto TCP/UDP específico en un dispositivo conectado a la red y notificar si deja de responder: avisar si tu nodo local de blockchain ha dejado de responder en el puerto 8333, Apache2 dejó de responder en el puerto 443, o monitorizar el estado de openssh que se ejecuta en tu servidor en el puerto 22. Estos son solo ejemplos. Las opciones son ilimitadas.

Entender las definiciones de notificación

Antes de empezar con nuestros ejercicios, un rápido glosario te ayudará a comprender qué significan las opciones de notificación de un único carácter. Recurre a esta lista durante los ejercicios para comprender lo que realmente estamos haciendo cuando especificamos, por ejemplo, w,u,c,r,f.

Cuando veas w,u,c,r,f,n, estas son las definiciones:

  • w Notifica si está en estado de aviso,
  • u Notifica si está en estado desconocido,
  • c Notifica si está en estado crítico,
  • r Notifica si se ha recuperado de un estado previamente adverso,
  • f Notifica si el servicio está fallando (se enciende y se apaga de vez en cuando)
  • n Nunca se notifica

Cuando veas d,u,r,f,s,n, estas son las definiciones:

  • d Notifica si el host está caído,
  • u Notifica si el host es inaccesible (por ejemplo, Internet inactivo),
  • r Notifica la recuperación,
  • f Notifica si el host está en modo flapping,
  • s Notifica si el tiempo de inactividad del servicio programado empieza o termina,
  • n Nunca se notifica

Ejercicio 1: Monitorizar tu sitio web con check_http

Tu sitio web es la cara visible de tu negocio. Si alguna vez cae por alguna razón, o se vuelve lento, es importante ser proactivo para remediar la situación. Sólo hay una cosa peor que un cliente contacte contigo para hacerte saber que tu sitio web está caído y es darte cuenta que lleva inactivo durante una semana y los clientes durante ese tiempo no te lo han notificado. Simplemente se fueron a otro sito. Que tu sitio web se vuelva lento o no responda también puede dañar tu posicionamiento SEO.

NEMS Linux puede vigilar de cerca tu sitio web y enviarte una alerta por correo electrónico, Telegram o Pushover si tu sitio se desconecta, deja de responder o se vuelve lento. Esto hace que NEMS Linux sea una herramienta fantástica para los diseñadores web y hosts que desean asegurarse de que los sitios de sus clientes estén siempre activos para que éstos no noten ningún tipo inactividad. Si tu sitio está alojado a través de SSL, NEMS puede incluso notificarte si tu certificado ha caducado o está a punto de caducar. Son muchas las opciones ya que NEMS Linux ha sido creado para monitorizar prácticamente todo.

En nuestro primer ejercicio de este mes, usaremos el comando check_http integrado. Para mi ejemplo, usaré https://nemslinux.com/. Te sugiero hacer lo mismo por el bien de la lección y luego intentar cambiar el Host por tu propio dominio una vez que entiendas cómo está todo interconectado. Espero que hayas completado los dos artículos anteriores en los números de octubre y noviembre de 2018 de ODROID Magazine. Si no, vuelve atrás y léelos primero. Si estás listo, ¡vamos a ello! Puede parecer algo engorroso cuando eche un vistazo a los siguientes 6 pasos, pero ten en cuenta que una vez que hayas creado tu configuración, podrás reutilizarla para tantos hosts de sitios web como quieras, simplemente asignando tu host al grupo de host web_site_ssl, que aprenderás a crear a continuación.

Abre NEMS NConf y sigue estos pasos:

  • Para empezar, debemos asegurarnos de que nuestro comando de verificación esté listo para nuestro caso práctico. Aunque el valor por defecto está cambiando en NEMS 1.5, si estás en NEMS 1.4.1, deberás cambiar el comando de verificación para usar controles de nombre de host en lugar de controles por dirección IP.
  • Muestra tu lista de "checkcommand"
  • Edita check_http
  • Actualmente, la línea de comandos utiliza –I %HOSTNAME%, con -I que significa "Dirección IP". Cambie esto por -H (nombre de host) para que ahora sea ... –H %HOSTNAME% ... Ahora podemos usar el nombre de host de nuestro sitio web o una dirección IP para el comando check_http.
  • Guarda tus cambios

Figura 1: Modifica check_http para usar el nombre de host en lugar de la dirección IP

A continuación, debemos configurar nuestro comando check-host-alive, el cual se usa para hacer ping a los hosts para determinar si están activo o caído. El nombre de host de mi sitio web solo responderá en IPv4, aunque el comando check-host-alive por defecto en NEMS 1.4.1 usa IPv6. En lugar de editar el comando de muestra, vamos a añadir uno nuevo basándonos en él, pero éste únicamente usará IPv4. De esa forma, podremos usar el comando antiguo si necesitamos IPv6 para un dispositivo diferente.

  • Mostrar la lista de "misccommand".
  • Editar check-host-alive.
  • Resalta y copia la línea de comandos completa en tu portapapeles.
  • Haga clic en “Add” junto a “misccommand” para agregar un nuevo comando.
  • Nombra tu nuevo comando check-host-alive-ipv4
  • Pega la línea de comandos desde tu portapapeles.
  • Al final de la línea de comandos, simplemente agrega un espacio, seguido de -4 para indicar que vas a usar IPv4 para esta verificación.
  • Guarda el nuevo comando.

Figura 2 - Crear un nuevo “misccommand” para check-host-alive usando IPv4

  • Nuestros comandos ya están listos, de modo que ahora es el momento de configurar nuestro "hostpreset". Queremos crear uno para los sitios web IPv4. De esta manera, podemos reutilizar el "preset" para cualquier sitio web que queramos monitorizar con NEMS Linux.
  • Añade un nuevo "hostpreset".
  • Nombra tu sitio web preset IPv4
  • Configura “host alive check” en el nuevo comando que creaste en el Paso 2: check-host-alive-ipv4
  • Guarda tu “hostpreset”.

Figura 3 - Nuevo “hostpreset” para sitios web IPv4

Hasta ahora, todo lo que hemos hecho se puede reutilizar para cualquier sitio web cuyo nombre de host se resuelva en una dirección IPv4. De aquí en adelante, sin embargo, configuraremos nuestro grupo de hosts específicamente para un sitio web seguro (SSL).

  • Añade un nuevo "hostgroup".
  • Asigna un nombre a este web_site_ssl
  • Deja todo lo demás como está y guarda tu nuevo hostgroup.

Figure 4 - New hostgroup for web_site_ssl

¿Por qué creamos un nuevo hostgroup si la configuración se reduce a un simple nombre? Bueno, aquí es donde la magia entra en juego. Ahora tenemos un comando “check”, un comando “check host alive”, un “hostpreset” y un “hostgroup”. Ahora, podemos vincularlos todos, iniciando un Servicio Avanzado. Recuerda, la idea es que todo lo que hacemos se pueda asignar a tantos hosts como queramos. No tengamos que volver a hacer todo esto para el siguiente sitio web.

  • Haz clic en “Add” junto a “Advanced Services”.
  • Nombra tu servicio: Web Site (SSL)
  • Proporciónale un alias: Uptime of SSL Web Site
  • Ajusta el período de verificación y el período de notificación en 24x7
  • Para asignar el servicio avanzado al “hostgroup”, resalta el hostgroup que creamos web_site_ssl y presiona la flecha verde para agregarlo a la lista de elementos seleccionados.
  • En los grupos de contacto, asegúrate de agregar administradores también. De lo contrario, no recibirás notificaciones.
  • Configura tus notificaciones de la siguiente manera: max check attempts: 10 ; check interval: 1 ; retry interval: 5 ; first notification delay: 10 ; notification interval: 30 ; notification options: w,u,c,r
  • Finalmente, configura tus "service parameters": -S --sni
  • Guarda tu servicio avanzado.

Consejo: -S le dice a check_http que este sitio usa SSL, y --sni habilita SNI (Indicación del nombre del servidor) puesto que yo uso CloudFlare para SSL en nemslinux.com, y por lo tanto mi dirección IP está asociada con más de un nombre de dominio. Para tu sitio, si tienes algún problema, intente eliminar SNI simplemente omitiendo --sni. Para disponer de toda la documentación sobre el comando check_http, visita la página wiki de documentación de NEMS Linux en https://docs.nemslinux.com/check_commands/check_http

Figura 5 - Creación de un servicio avanzado para comprobar sitios web SSL

Finalmente, agregaremos nuestro sitio web host. A partir de ahora, este es el único paso al que debemos recurrir para agregar más sitios a tu servidor NEMS Linux.

  • Añadir un nuevo host.
  • Configura lo siguiente:
  • hostname: https://nemslinux.com
  • alias: NEMS Web Site
  • address: nemslinux.com
  • OS: Linux
  • host preset: Web Site IPv4 (See what we did there?)
  • monitored by: Default Nagios
  • host is collector: no
  • check period: 24x7
  • notification period: 24x7
  • max check attempts: 10
  • check interval: 1
  • retry interval: 5
  • first notification delay: 10
  • notification interval: 30
  • notification options: d,u,r,f
  • asigna el host a hostgroup (¿estás listo para esto?): web_site_ssl
  • Guarda.
  • Genera tu configuración

Figura 6 - Creación de un host para monitorizar el sitio web SSL IPv4

Si has seguido todos los pasos correctamente y mi sitio web está activo, Adagios debería informar de que todo está bien. Para probar qué sucedería si empezara a fallar, cambia el nombre de host en el Host a nemslinux.com1 (que obviamente no responderá), y luego genera tu configuración nuevamente. Una vez que estés preparado, cambia el Host por el de tu sitio web. Si su sitio es SSL, solo debes cambiar el nombre de host, el alias y la dirección del host (Paso 6). Si no es SSL, repite el Paso 4, pero esta vez crea un nuevo grupo de host llamado web_site_no_ssl, y luego repite el Paso 5. En esta ocasión, creas un nuevo Servicio Avanzado llamado Sitio Web (no SSL), asígnalo (5.e) al Sitio web (no SSL) y omite los parámetros SSL en 5.h.

Figura 7 - NEMS Adagios muestra que nemslinux.com está ACTIVO

Ejercicio 2: Monitorizar un puerto no estándar con check_tcp

Este es un ejercicio adicional que te ayudará a controlar el tiempo de actividad de cualquier puerto TCP/UDP. NEMS Linux incluye una escucha de puerto ficticio que se ejecuta en el puerto 9590. La escucha del puerto se llama hábilmente 9590, y lo único que hace es responder si está activo. Esto se puede utilizar para simular un puerto en otro dispositivo. Configuraremos un monitor de servicio en el host NEMS para que nos avise si el puerto 9590 se desconecta alguna vez.

  • En el menú de la izquierda de NConf, verás "Services". Haga clic en "Add".
  • Define el Service Name con: 9590
  • Deja Service Enabled configurado en: Yes
  • Ajusta el Check Command en: check_tcp
  • Ajusta Assigned to Host em: NEMS (este host viene pre-instalado)
  • Deja Check Period fijado en: 24×7
  • Deja Notification Period en: 24x7
  • Deja Service Templates como está, no seleccionado.
  • En Contact Groups, resalte el grupo de 'administradores' y presiona la flecha que apunta hacia la derecha para moverlo a Elementos seleccionados.
  • Deja Notes, Notes URL y Action URL en blanco.
  • Fija Max Check Attempts en: 30
  • Fija Check Interval en: 1
  • Fija Retry Interval en: 1
  • Fija First Notification Delay en: 5
  • Fija Notification Interval en: 15
  • Fija Notification Options en: w,u,c,r,f,s
  • Deja en blanco Active Checking, Passive Checking, Notification Enabled, Check Freshness y Freshness Threshold.
  • Deja Assign Service to servicegroup tal cual, ninguno seleccionado.
  • Configura Params for check command to the port number: 9590
  • Presiona “Submit”
  • Presiona “Generate Nagios Config”, luego haz clic el botón “Generate” en la siguiente pantalla para implementar y activar tu nueva configuración.

Una vez que se ejecute la nueva configuración, intenta hacer que falle el servicio abriendo “Monit Service Manager” debajo de “System” en el cuadro de mandos de NEMS. Haga clic en el proceso denominado 9590 y luego haz clic en "Stop service". Notarás que, en aproximadamente 1 minuto, el estado de 9590 mostrará un problema en todas las vistas de estado (por ejemplo, NEMS TV Dashboard, NEMS Adagios, Nagios Core), y tras aproximadamente 5 minutos recibirás una notificación (asumiendo que los parámetros de tus notificaciones estas configurados correctamente). Una vez recibida una notificación, visita NEMS Adagios para reconocer el corte. Luego, vuelve a Monit, abre el proceso 9590 y haz clic en "Enable Monitoring". Esto volverá a cargar 9590 y pronto verás que cambia a un estado recuperado. Una vez completado, intenta configurar un nuevo servicio para monitorizar un host real de tu red. Simplemente cambia el nombre del servicio, el host en el paso 5 (ya sabe cómo agregar nuevos hosts si aún no lo tienes configurado) y el número de puerto en el paso 19.

Aprender más

NEMS tiene un foro comunitario muy activo. Entro con bastante frecuencia para proporcionar soporte gratuito a los usuarios. También ofrezco soporte comercial personalizado para aquellos que necesitan un mayor nivel de soporte. NEMS Linux es gratis para descargar y usar. Su código fuente está disponible en GitHub. Descarga NEMS Linux para ODROID en https://nemslinux.com/

También puede seguir @NEMSLinux en Twitter o unirte a nosotros en Discord.

Asegúrate de leer mi artículo en la edición del próximo mes de ODROID Magazine donde revelare las increíbles mejoras de NEMS Linux 1.5 y mostraré cómo actualizar desde NEMS 1.4.1.

Sobre el Autor

Robbie Ferguson es el dueño de Category5 Technology TV y autor de NEMS Linux. Su programa de televisión se encuentra en https://category5.tv/ y su blog es https://baldnerd.com/.

Be the first to comment

Leave a Reply