Мониторинг статических сайтов: health-check, алерты и логи

Мониторинг статического сайта проще чем динамического — нет базы данных, нет PHP, нет очередей. Достаточно проверять три вещи: главная страница отвечает 200, SSL-сертификат валиден, и диск VPS не переполнен. GitHub CMS включает встроенный health-check скрипт, который можно запускать через cron каждые 5 минут и получать Telegram-алерты при сбоях.

Health-check: проверка сайта через curl

ЭндпоинтЧто проверяет
GET /Главная страница отвечает 200
GET /healthzСпециальный health-check эндпоинт
GET /sitemap.xmlSitemap доступен и валиден
SSL checkСертификат не истёк (дней осталось > 7)
Health-check мониторинг

Telegram-алерты при сбое

#!/bin/bash
SITES=("https://mysite.ru" "https://mysite.com")
BOT_TOKEN="123:abc"
CHAT_ID="-456"

for url in "${SITES[@]}"; do
  status=$(curl -sI "$url" | head -1 | awk '{print $2}')
  if [ "$status"!="200" ]; then
    MSG="⚠️ $url вернул $status"
    curl -s "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" -d "chat_id=$CHAT_ID" -d "text=$MSG"
  fi
done

FAQ

Как часто нужно проверять статический сайт?

Каждые 5 минут через cron — достаточно для статического сайта. Поверка занимает < 1 секунды и не создаёт нагрузки. Для критичных проектов можно сократить до 1 минуты.

Что делать если health-check показал ошибку?

1. Проверить nginx: systemctl status nginx. 2. Проверить диск: df -h. 3. Проверить SSL: certbot certificates. 4. Если всё ок — проверить DNS и сеть. GitHub CMS с symlink-деплоем позволяет откатиться к предыдущей версии за 0.1 сек.

Настройте мониторинг за 10 минут

GitHub CMS Pro — готовый health-check скрипт + Telegram-алерты. Добавьте в cron — и спите спокойно.