Image

Base de conocimientos → Configurar un script crontab para evitar una carga elevada

[Servidores virtuales]
Fecha de publicación: 27.01.2023

Cuando ninguno de los servicios de protección pudo repeler el ataque o el servidor comenzó a trabajar bajo carga alta por otro motivo. Sugerimos instalar el script y ejecutarlo cada minuto a través del servicio crontab. Esto le permitirá no perder el acceso al servidor durante cargas críticas y tomar medidas para eliminar esta situación.

/etc/cron.daily/load-average-2.sh

#!/bin/bash

loadavg=`uptime | awk '{print $10+0}'`
# bash doesn't understand floating point
# so convert the number to an interger
thisloadavg=`echo $loadavg|awk -F \. '{print $1}'`
if [ "$thisloadavg" -ge "2" ]; then
echo "Busy - Load Average $loadavg ($thisloadavg) "
echo 'Warning - Load AVG (my.server.tld) on:' `date` `uptime` | mailx -s "Warning: LA from `uptime | cut -d'(' -f2 | cut -d')' -f1`" -S smtp=smtp://mail.server.tld -S smtp-auth=login -S smtp-auth user=user@domain.tld -S smtp-auth-password=PassW0rd -S from="LLC COMPANY" to@domain.tld

else
echo "Okay - Load Average $loadavg ($thisloadavg) "
fi

Este script debe guardarse en el archivo load-average-2.sh en la carpeta /etc/cron.daily y establecer los derechos de ejecución.

Luego necesitas agregar una línea mediante el comando crontab -e para ejecutarlo cada 2 minutos:

*/2 * * * * /etc/cron.daily/load-average-2.sh >> /dev/null 2>&1

Los valores deben ser reemplazados por los tuyos propios:

  • my.server.tld: el nombre del servidor en el que está instalando el script.
  • mail.server.tld: el nombre de dominio del servidor de correo a través del cual el script le enviará notificaciones.
  • user@domain.tld: nombre del buzón para conectarse al servidor de correo (iniciar sesión).
  • PassW0rd: contraseña de su cuenta de correo.
  • LLC COMPANY: nombre y dirección de quien se enviará la carta.
  • to@domain.tld - dirección postal donde se enviará la notificación.

Si el promedio de carga excede 2, es decir 200% (2 núcleos), el script enviará una notificación. Este parámetro está resaltado, puede cambiarlo por uno propio dependiendo de la cantidad de núcleos que tenga el servidor. Por ejemplo, si tiene 4 núcleos, entonces la carga máxima será 4, es decir 400%.

Si es necesario, puede agregar comandos al script que deben ejecutarse, por ejemplo, reiniciar los servicios para aliviar la carga. Debes agregarlos antes, por ejemplo:

service nginx restart
service ddos restart
service httpd restart




Sin comentarios aún