Skip to content

Instantly share code, notes, and snippets.

@AnatomicJC
Last active December 29, 2024 11:26
Show Gist options
  • Save AnatomicJC/0246b4658fc9f2c4aa6d57cc1a0e0e44 to your computer and use it in GitHub Desktop.
Save AnatomicJC/0246b4658fc9f2c4aa6d57cc1a0e0e44 to your computer and use it in GitHub Desktop.
Check CPU load

Script Bash pour surveiller la charge CPU et redémarrer HAProxy

Voici un script Bash qui vérifie la charge CPU et redémarre le service HAProxy si la charge dépasse 85 % au moins 2 fois. Le script stocke les occurrences dans un fichier temporaire.

Script Bash

#!/bin/bash

# Chemin du fichier temporaire pour stocker les occurrences
temp_file="/tmp/load_high_count"
log_file="/var/log/check_cpu_load.log"

# Limite du load average sur 1 minute
load_threshold=1.5

# Vérifie si le fichier temporaire existe, sinon le créer avec une valeur initiale de 0
if [ ! -f "$temp_file" ]; then
    echo 0 > "$temp_file"
fi

# Vérifie si le fichier de log existe, sinon le créer
touch "$log_file"

# Fonction pour obtenir le load average sur 1 minute
get_load_average() {
    awk '{print $1}' /proc/loadavg
}

# Obtenir le load average actuel sur 1 minute
load_average=$(get_load_average)

# Vérifie si le load average dépasse le seuil
if (( $(echo "$load_average > $load_threshold" | bc -l) )); then
    # Incrémenter le compteur
    echo $(( $(cat "$temp_file") + 1 )) > "$temp_file"
else
    # Réinitialiser le compteur si le load average est en dessous du seuil
    echo 0 > "$temp_file"
fi

# Lire le compteur actuel
count=$(cat "$temp_file")

# Si le compteur atteint 1 ou plus, redémarrer HAProxy, logguer la date et réinitialiser le compteur
if [ "$count" -gt 1 ]; then
    systemctl restart haproxy.service
    echo "$(date): HAProxy restarted due to high load average ($load_average)" >> "$log_file"
    echo 0 > "$temp_file"
fi

Fichier de service systemd

Créez un fichier nommé /etc/systemd/system/cpu-monitor.service avec le contenu suivant :

[Unit]
Description=Monitor CPU load and restart HAProxy if needed
Wants=cpu-monitor.timer

[Service]
Type=simple
ExecStart=/usr/local/bin/check_cpu_load.sh

Remplacez /path/to/your/script.sh par le chemin réel vers votre script.

Fichier de timer systemd

Créez un fichier nommé /etc/systemd/system/cpu-monitor.timer avec le contenu suivant :

[Unit]
Description=Run CPU monitoring script every minute

[Timer]
OnBootSec=1min
OnUnitActiveSec=1min
Unit=cpu-monitor.service

[Install]
WantedBy=timers.target

Activer et démarrer le timer

  1. Rechargez les fichiers systemd :

    systemctl daemon-reload
  2. Activez et démarrez le timer :

    systemctl enable cpu-monitor.timer
    systemctl start cpu-monitor.timer

Le script sera exécuté toutes les minutes. Si la charge CPU dépasse 85 % au moins 2 fois, HAProxy sera redémarré automatiquement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment