Healthcheck n8n на Beget и Timeweb: проверка доступности, SSL и Telegram-алерт ¶
Обновлено: 2026-05-30
Импортируйте workflow, замените credentials и прогоните тестовый payload до включения production.
- Проблема: почему n8n на хостинге падает незаметно
- Архитектура workflow для healthcheck n8n
- Контракт параметров мониторинга
- Code Node: статус, latency, SSL и severity
- Готовый workflow JSON: скачать и импортировать
- Пошаговая настройка мониторинга Beget, Timeweb и VPS
- Тесты отказов и Telegram-алертов
- Production-риски мониторинга n8n
- Полезные ссылки и смежные инструкции
- Критерии готовности
Проблема: n8n может быть визуально “живым” в панели хостинга, но недоступным для webhook, CRM и форм. Без healthcheck команда узнаёт о проблеме от клиента или менеджера.
Решение: настроить регулярный healthcheck n8n на Beget, Timeweb или VPS: проверить HTTPS endpoint, latency, SSL, классифицировать ошибку и отправить Telegram-алерт с runbook.
Проблема: почему n8n на хостинге падает незаметно ¶
n8n на недорогом VPS, Beget Cloud или Timeweb Cloud часто работает стабильно до первого обновления, нехватки памяти, истёкшего SSL или зависшего reverse proxy. Внешне это выглядит просто: форма Tilda отправила заявку, но webhook не ответил; CRM не обновилась; Telegram bot молчит. Поэтому мониторинг n8n должен проверять не только “сервер пингуется”, а реальный HTTP-ответ production endpoint.
Для автоматизации продаж важно обнаружить простой раньше менеджера. Healthcheck workflow превращает техническую проверку в понятный инцидент: какой сервис, какой статус, какая задержка, сколько дней до истечения SSL и что делать дальше.
Архитектура workflow для healthcheck n8n ¶
| Нода | Роль | Что проверить |
|---|---|---|
| Schedule every 5 min | Запускает проверку по расписанию | Интервал, timezone, не слишком частые запросы |
| Check n8n URL | Проверяет HTTPS endpoint | HTTP 200, timeout, redirect, body |
| Classify health | Назначает severity | Status, latency, SSL days left |
| Telegram alert | Отправляет сообщение команде | chat_id, dedupe, runbook link |
| Incident log | Сохраняет историю | Не терять flapping и recovery |
Контракт параметров мониторинга ¶
Конфигурацию лучше хранить как JSON или ENV, а не размазывать URL по нескольким HTTP Request нодам. Тогда один шаблон можно использовать для Beget, Timeweb и отдельного VPS.
{
"service": "n8n-production",
"url": "https://n8n.example.ru/healthz",
"webhook_url": "https://n8n.example.ru/webhook/healthcheck-ping",
"expected_status": 200,
"max_latency_ms": 2500,
"alert_chat_id": "-1001234567890",
"hoster": "timeweb-vps"
}
Code Node: статус, latency, SSL и severity ¶
Этот Code Node переводит технические метрики в понятный статус. В production добавьте отдельную проверку SSL через внешний endpoint или node, который возвращает ssl_days_left.
const service = $json.service ?? 'n8n';
const status = Number($json.statusCode ?? $json.status ?? 0);
const latency = Number($json.latency_ms ?? $json.responseTime ?? 0);
const expected = Number($json.expected_status ?? 200);
const maxLatency = Number($json.max_latency_ms ?? 2500);
const sslDaysLeft = Number($json.ssl_days_left ?? 30);
let severity = 'ok';
let reason = 'service_available';
if (status !== expected) { severity = 'critical'; reason = `unexpected_status_${status}`; }
else if (latency > maxLatency) { severity = 'warning'; reason = 'slow_response'; }
else if (sslDaysLeft < 7) { severity = 'critical'; reason = 'ssl_expires_soon'; }
else if (sslDaysLeft < 14) { severity = 'warning'; reason = 'ssl_renewal_window'; }
return [{ json: {
service,
severity,
reason,
status,
latency_ms: latency,
ssl_days_left: sslDaysLeft,
dedupe_key: `healthcheck:${service}:${reason}`,
message: severity === 'ok'
? `✅ ${service}: OK, ${latency} ms`
: `🚨 ${service}: ${reason}, status=${status}, latency=${latency} ms, ssl=${sslDaysLeft}d`,
checked_at: new Date().toISOString()
}}];Почему latency важнее простого ping
Webhook может отвечать 200, но делать это за 8–12 секунд. Для форм, CRM и платёжных уведомлений это уже пользовательская проблема: внешний сервис может посчитать запрос неуспешным и повторить его.
Готовый workflow JSON: скачать и импортировать ¶
В архиве страницы есть импортируемый workflow JSON и test payload. После импорта замените Telegram credential, URL n8n, chat_id и пороги latency.
{
"name": "Nodbot - n8n healthcheck for Beget and Timeweb",
"nodes": [
{ "name": "Schedule every 5 min", "type": "n8n-nodes-base.scheduleTrigger", "purpose": "Запускать мониторинг по расписанию" },
{ "name": "Check n8n URL HTTP", "type": "n8n-nodes-base.httpRequest", "purpose": "Проверить статус и latency" },
{ "name": "Classify health Code", "type": "n8n-nodes-base.code", "purpose": "Назначить severity и dedupe key" },
{ "name": "Send Telegram alert", "type": "n8n-nodes-base.telegram", "purpose": "Уведомить команду о проблеме" }
],
"connections": "Schedule → HTTP check → Classify → Telegram"
}
Пошаговая настройка мониторинга Beget, Timeweb и VPS ¶
- Создайте отдельный endpoint
/healthzили проверяйте лёгкий webhook n8n без бизнес-логики. - Укажите production URL, ожидаемый статус и timeout.
- Добавьте Telegram credential и рабочий чат инцидентов.
- Настройте дедупликацию: один алерт на одну причину до recovery.
- Проверьте runbook: где перезапустить Docker Compose, как посмотреть логи и как откатить обновление.
Тесты отказов и Telegram-алертов ¶
curl -fsS -o /dev/null -w '%{http_code} %{time_total}
' "https://n8n.example.ru/healthz"
curl -X POST "https://YOUR-N8N-DOMAIN/webhook/beget-timeweb-n8n-healthcheck" -H "Content-Type: application/json" --data @beget-timeweb-n8n-healthcheck-payload.json- Остановите контейнер n8n и проверьте critical alert.
- Подставьте неправильный URL и проверьте reason
unexpected_status. - Снизьте
max_latency_ms, чтобы увидеть warning без реального падения. - Верните сервис и убедитесь, что команда получает recovery-сообщение или видит его в incident log.
Production-риски мониторинга n8n ¶
- Мониторинг запущен внутри того же n8n. Если n8n упал целиком, он не отправит алерт. Используйте внешний cron или резервный мониторинг для критичных систем.
- Проверяется только главная страница. UI может открываться, а webhook endpoint уже недоступен из-за reverse proxy.
- Нет дедупликации. Каждые 5 минут чат получает одинаковое сообщение и команда перестаёт реагировать.
- Нет проверки SSL. Сертификат истёк, а HTTP-check начал падать уже после инцидента.
- Нет runbook. Алерт есть, но непонятно, кто и что должен сделать.
Полезные ссылки и смежные инструкции ¶
Смотрите также: ENV-переменные n8n, Error Workflow с Telegram-алертом, Масштабирование n8n. Официальная документация: n8n hosting, Docker Compose, Telegram Bot API.
Критерии готовности ¶
- Падение n8n обнаруживается быстрее, чем пользователь пишет в поддержку.
- Проверяется именно webhook/health endpoint, а не только ping сервера.
- В алерте есть service, hoster, status, latency, severity и runbook.
- Повторяющиеся проблемы дедуплицируются до recovery.
- Есть отдельный план действий для Docker Compose, proxy, SSL и дискового места.
Nodbot настроит healthcheck, Error Workflow, Telegram-алерты и runbook-и для ваших production-автоматизаций.
Настроить мониторинг