Уровень 0: Curl в кроне
Самое простое что можно сделать:
*/5 * * * * curl -s -o /dev/null -w "%{http_code}" https://example.com | grep -v 200 && \
curl -s "https://api.telegram.org/botTOKEN/sendMessage?chat_id=ID&text=Сайт упал"
Работает. Но у этого подхода куча проблем: нет истории, нет повторной проверки перед алертом, нет мониторинга SSL, нет красивой страницы для клиента. И если сервер сам упадёт — скрипт тоже упадёт вместе с ним.
Уровень 1: HTTP мониторинг
Правильный HTTP мониторинг — это не просто проверка что сервер отвечает. Это проверка HTTP-статуса, измерение времени ответа, повторная проверка перед алертом чтобы исключить флапы, и отдельная проверка с внешнего сервера.
Последний пункт критичен. Если мониторинг живёт на том же сервере что и сайт — при падении сервера упадёт и мониторинг.
Уровень 2: SSL мониторинг
Let's Encrypt иногда не продлевается автоматически. Сертификат истекает — браузер показывает «Небезопасно». Конверсия падает до нуля.
Правильное решение — отдельный тип монитора который подключается к хосту через TLS и смотрит not_after в сертификате. Алерт за 14 дней до истечения — достаточно времени чтобы спокойно разобраться.
Уровень 3: Keyword мониторинг
Сайт может отвечать 200 OK но показывать страницу ошибки, пустой экран или результат взлома. Keyword мониторинг проверяет наличие конкретного текста в ответе — например названия компании или элемента интерфейса.
Уровень 4: Heartbeat мониторинг
HTTP мониторинг не поможет для фоновых задач — cron-джобов, воркеров очередей, скриптов обработки данных. Heartbeat работает наоборот: задача сама пингует мониторинг после каждого выполнения. Если пинг не пришёл в ожидаемое время — алерт.
# В конце cron-задачи
curl -s https://uppulse.ru/hb/ВАШ_ТОКЕН
Уровень 5: Webhook и интеграции
Telegram-уведомления хороши для личного использования. Но в команде нужна интеграция с существующими инструментами. Webhook решает это просто: при инциденте отправляется POST-запрос с JSON на указанный URL.
{
"monitor_name": "Production API",
"status": "down",
"error": "Connection timeout",
"timestamp": "2026-04-14T10:30:00Z"
}
Итого
Каждый уровень добавляет надёжности. Для личного сайта достаточно HTTP мониторинга с Telegram-алертом. Для production-сервиса нужны все уровни — от HTTP до Webhook интеграции.