Jak na Linux serveru sledovat dostupnost webu a po výpadku restartovat Apache s upozorněním e-mailem

Obsah
Při správě webového serveru je důležité zajistit, aby webová aplikace zůstávala dostupná. Pokud se web stane nedostupným například kvůli selhání Apache, je vhodné nasadit jednoduchý monitorovací skript, který situaci rozpozná a automaticky provede restart služby. V tomto článku si ukážeme, jak takový skript vytvořit a nastavit zasílání e-mailového upozornění.
Skript pro kontrolu dostupnosti webu
Skript bude:
1. Kontrolovat odpověď serveru na zadané URL
2. Pokud je web nedostupný po více než 5 minut (5 pokusů po 1 minutě), restartuje službu Apache
3. Pošle e-mail správci se zprávou o výpadku a provedeném restartu
Kód skriptu
Soubor: /usr/local/bin/check_website.sh
#!/bin/bash
# === KONFIGURAČNÍ PROMĚNNÉ ===
URL="http://localhost" # URL, kterou kontroluješ
MAX_RETRIES=5 # Počet neúspěšných pokusů před restartem
EMAIL_TO="info@webmint.cz" # Email příjemce
EMAIL_SUBJECT="Restart Apache kvůli výpadku webu"
EMAIL_BODY="Web $URL není dostupný již více než $MAX_RETRIES minut.
Proveden restart Apache na serveru $(hostname) dne $(date)."
# === SOUBOR PRO UKLÁDÁNÍ STAVU ===
FAIL_FILE="/tmp/site_down_counter.txt"
# === KONTROLA DOSTUPNOSTI ===
if curl -s --head "$URL" | grep "200 OK" > /dev/null; then
rm -f "$FAIL_FILE"
else
if [ -f "$FAIL_FILE" ]; then
COUNT=$(cat "$FAIL_FILE")
COUNT=$((COUNT + 1))
else
COUNT=1
fi
echo $COUNT > "$FAIL_FILE"
if [ "$COUNT" -ge "$MAX_RETRIES" ]; then
echo "[$(date)] Web není dostupný přes $MAX_RETRIES minut. Restartuji Apache..."
# Restart Apache
systemctl restart apache2
# Odeslání e-mailu
echo -e "$EMAIL_BODY" | mail -s "$EMAIL_SUBJECT" "$EMAIL_TO"
# Reset počítadla
rm -f "$FAIL_FILE"
fi
fi
Instalace nástroje mailutils
Pro odesílání e-mailů pomocí příkazu mail
je potřeba mít nainstalovaný balíček mailutils
:
sudo apt install mailutils
Automatické spouštění skriptu pomocí cronu
Skript je doporučeno spouštět každou minutu. Otevřete crontab:
crontab -e
A přidejte řádek:
* * * * * /usr/local/bin/check_website.sh
Testování výpadku
Chcete-li otestovat funkčnost skriptu, změňte dočasně URL
na neexistující adresu (např. http://localhost:9999
) a spusťte skript ručně několikrát za sebou:
bash /usr/local/bin/check_website.sh
Po pěti neúspěšných pokusech by měl být Apache restartován a e-mail odeslán.
Závěr
Tento jednoduchý skript je efektivním řešením pro základní dohled nad dostupností webu a může sloužit jako první krok k robustnějšímu monitorovacímu systému. Díky proměnným lze snadno měnit URL, e-mail a text upozornění, takže je skript dobře přizpůsobitelný různým prostředím.
Poslední aktualizace článku proběhla 25.8.2025.
OBJEDNAT SEO OPTIMALIZACI