Перейти к содержанию

Healthcheck n8n на Beget и Timeweb: проверка доступности, SSL и Telegram-алерт

Обновлено: 2026-05-30

AI summary: AI-friendly Problem/Solution-мануал: как настроить healthcheck n8n на Beget, Timeweb или VPS, проверять HTTPS, latency, webhook endpoint и отправлять Telegram-алерт до того, как пользователи заметят простой.
Шаблон для внедрения

Импортируйте workflow, замените credentials и прогоните тестовый payload до включения production.

Проблема: n8n может быть визуально “живым” в панели хостинга, но недоступным для webhook, CRM и форм. Без healthcheck команда узнаёт о проблеме от клиента или менеджера.

Решение: настроить регулярный healthcheck n8n на Beget, Timeweb или VPS: проверить HTTPS endpoint, latency, SSL, классифицировать ошибку и отправить Telegram-алерт с runbook.

Схема healthcheck n8n на Beget и Timeweb с Telegram алертом
Проверка должна имитировать реальный пользовательский путь: HTTPS → webhook → ответ.

Проблема: почему 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 endpointHTTP 200, timeout, redirect, body
Classify healthНазначает severityStatus, 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

  1. Создайте отдельный endpoint /healthz или проверяйте лёгкий webhook n8n без бизнес-логики.
  2. Укажите production URL, ожидаемый статус и timeout.
  3. Добавьте Telegram credential и рабочий чат инцидентов.
  4. Настройте дедупликацию: один алерт на одну причину до recovery.
  5. Проверьте 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.

Пример Telegram алерта healthcheck n8n на Beget или Timeweb

Критерии готовности

  1. Падение n8n обнаруживается быстрее, чем пользователь пишет в поддержку.
  2. Проверяется именно webhook/health endpoint, а не только ping сервера.
  3. В алерте есть service, hoster, status, latency, severity и runbook.
  4. Повторяющиеся проблемы дедуплицируются до recovery.
  5. Есть отдельный план действий для Docker Compose, proxy, SSL и дискового места.
Нужен мониторинг n8n без шума?

Nodbot настроит healthcheck, Error Workflow, Telegram-алерты и runbook-и для ваших production-автоматизаций.

Настроить мониторинг