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

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

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

Líbí se vám článek? Dejte mu 5 hvězd!

Aktuální hodnocení článku 4.1/5 (23 hlasujících)

avatar autora Tomáš Rohlena
Tomáš Rohlena je zkušený specialista na SEO, vývoj webových stránek, portálů a digitálních aplikací, který propojuje technologické know-how s hlubokým porozuměním online marketingu a provozu webových projektů. Díky mnohaletým zkušenostem dokáže nejen optimalizovat weby pro maximální viditelnost ve vyhledávačích, ale také navrhovat efektivní strategie pro zlepšení konverzí a dlouhodobé udržitelnosti online projektů.
ikona sociální sítě ikona sociální sítě

Komentáře

Přidejte první komentář ke článku Jak na Linux serveru sledovat dostupnost webu a po výpadku restartovat Apache s upozorněním e-mailem.

Přidat komentář

Kde je článek zařazen?

Kategorie: Linux/MacOs
Štítky: server, apache