Introducción a la supervisión y alertas de Linux

Hay administradores de sistemas a los que les gusta hacer las cosas ellos mismos, y luego están aquellos de nosotros que tenemos que hacer las cosas nosotros mismos porque los presupuestos simplemente no permiten megacompras. Las suites de monitoreo y alertas empresariales son para empresas con grandes presupuestos o aquellas con aplicaciones, sistemas o servicios de misión crítica que absolutamente deben estar en funcionamiento el 100% del tiempo. Existen suites de monitoreo y alertas de código abierto, pero requieren un sistema dedicado y un tiempo considerable para configurarse. La mayoría también requiere que los agentes se instalen en puntos finales monitoreados, lo que requiere aprobación y tiempo para su implementación. La solución más rápida y sencilla es crear sus propios scripts de vigilancia y alerta y luego programarlos a través de cron. La mejor parte del monitoreo y las alertas localizadas (por servidor) es que puede personalizar los umbrales para cada sistema y servicio, en lugar de tener que vivir con una configuración general que podría no satisfacer sus necesidades.

Este artículo lo guía a través del proceso de creación de una secuencia de comandos que verifica el proceso del servidor web Apache cada cinco minutos, intenta reiniciarlo si está inactivo y luego lo alerta por correo electrónico si está inactivo durante más de 30 segundos y no puede ser reiniciado.

La mayoría de los procesos tienen un archivo de ID de proceso (PID) bajo el /run directorio cuando se ejecuta, y muchos de ellos tienen sus propios directorios separados que contienen sus archivos PID correspondientes. En este ejemplo, el servidor web Apache (httpd) tiene un archivo PID: /run/httpd/httpd.pid.

Llamé a este guión apache.sh , y lo colocó en el directorio de inicio de la raíz. Asegúrese de cambiar los permisos del archivo a 750 ( rwxr -x---) para que ningún otro usuario pueda ejecutar o incluso leer este archivo, independientemente de su ubicación:

$ sudo chmod 750 apache.sh

Notar: Si Apache no está instalado, no importa, porque puede reemplazar el httpd.pid señaló en el script con cualquier otro archivo PID que funcione para su sistema.

Hay muchas formas de crear un script de este tipo, pero así es como lo hice y funciona. Identifiqué el archivo PID con la variable, FILE. Decidí que, en lugar de enviar una alerta si el servidor web Apache estaba inactivo, haría que el script intentara reiniciar el servicio y luego lo verificaría nuevamente. Repetí este proceso dos veces más, esperando 10 segundos entre controles. Si el servicio de Apache sigue inactivo y no se puede reiniciar después de 30 segundos, el script envía un correo electrónico al equipo de administradores del sistema:

#!/bin/bash

FILE=/run/httpd/httpd.pid

if ! [ -f "$FILE" ]; then
systemctl start httpd.service
fi
sleep 10s
if ! [ -f "$FILE" ]; then
systemctl start httpd.service
fi
sleep 10s
if ! [ -f "$FILE" ]; then
systemctl start httpd.service
fi
sleep 10s
if ! [ -f "$FILE" ]; then
mail -s 'Apache is down' [email protected] <<< 'Apache is down on SERVER1 and cannot be restarted'
fi

También puede enviar un SMS al teléfono móvil de guardia de un equipo. Este script verifica la inexistencia del httpd.pid archivo, luego actúa si no se encuentra. Si el archivo existe, no se realiza ninguna acción. Nadie quiere recibir correos electrónicos o notar que un servicio está activo cada cinco minutos.

Una vez que haya probado su secuencia de comandos y se haya asegurado de que funciona de la manera que desea, coloque esta secuencia de comandos en el crontab del usuario raíz:

$ sudo crontab -e

La entrada que hice a continuación ejecuta el script cada cinco minutos:

*/5 * * * * /root/apache.sh

Este script es un ejemplo de una forma rápida de configurar un monitor de proceso y una alerta en un sistema local. Sí, es primitivo y simple, pero funciona y es gratis. Tampoco requiere discusiones de presupuesto, ni una ventana de mantenimiento para instalar el agente. También encontrará que este script no tiene un impacto significativo en el rendimiento de su sistema. Todas estas son cosas buenas. Y si es administrador de Ansible, puede proporcionar este script a toda su flota de sistemas sin tener que tocar cada uno individualmente.

¿Quiere aprender técnicas de monitoreo de Linux más avanzadas? Para verificar .

Artículos de interés

Subir