Error Workflow в n8n: Telegram-алерт с severity, дедупликацией и runbook ¶
Обновлено: 2026-05-30
Импортируйте workflow, подключите Telegram credential и назначьте его Error Workflow для production-сценариев.
- Проблема: почему failed execution в n8n теряется без Error Workflow
- Архитектура Error Workflow для Telegram-алертов
- Контракт данных Error Trigger
- Code Node: severity, dedupe key и короткое сообщение
- Готовый workflow JSON: скачать и импортировать
- Пошаговая настройка Error Workflow в n8n
- Тесты алертов, runbook и anti-spam
- Production-риски алертинга
- Полезные ссылки и документация
- Критерии готовности
Проблема: failed execution в n8n часто замечают только тогда, когда менеджер сообщает, что лид не попал в CRM, счёт не обновился или клиент не получил письмо. Логи есть, но команда не видит их в рабочем канале.
Решение: отдельный Error Workflow с Telegram-алертом, severity, dedupe key и ссылкой на runbook. Это не “прислать красное сообщение”, а минимальная система инцидентов для автоматизации продаж, CRM и платежных workflow.
Проблема: почему failed execution в n8n теряется без Error Workflow ¶
Вручную проверять executions невозможно: ошибка может случиться ночью, в выходной или после обновления credential. Если workflow связан с оплатами, заявками или SLA поддержки, “увидим завтра” превращается в потерянные деньги. Error Workflow в n8n позволяет централизовать реакцию на сбой и не добавлять Telegram-ноду в каждый сценарий отдельно.
Но алерты без severity быстро превращаются в шум. Команда должна отличать временный timeout от сломанного OAuth, а повторяющиеся 429 не должны засыпать чат сотней одинаковых сообщений.
Архитектура Error Workflow для Telegram-алертов ¶
| Нода | Роль | Что проверить |
|---|---|---|
| Error Trigger | Получает данные failed execution | Workflow назначен как Error Workflow |
| Classify severity | Собирает severity и dedupe key | Правила для 401/403/429/timeout |
| Check dedupe | Подавляет повтор одинаковых ошибок | TTL, unique key, reset после recovery |
| Send Telegram alert | Отправляет понятный алерт | chat_id, parse mode, лимит длины |
| Incident log | Пишет событие в Notion/Jira/CRM | Не хранить токены и полный stack trace |
Контракт данных Error Trigger ¶
Error Trigger отдаёт контекст выполнения: workflow, node, execution URL и сообщение ошибки. Для теста можно использовать такой payload через отдельный test webhook или pin data.
{
"execution": { "id": "84721", "url": "https://n8n.example.com/execution/84721" },
"workflow": { "id": "crm-sync", "name": "CRM sync from webhook" },
"node": { "name": "Update CRM deal", "type": "n8n-nodes-base.httpRequest" },
"error": { "message": "429 Too Many Requests", "stack": "NodeApiError: rate limit" },
"lastNodeExecuted": "Update CRM deal",
"mode": "trigger"
}
Code Node: severity, dedupe key и короткое сообщение ¶
Code Node ниже делает алерт полезным: классифицирует severity, нормализует похожие ошибки в один dedupe key и собирает короткий текст для Telegram.
const e = $json;
const workflow = e.workflow?.name ?? 'Unknown workflow';
const executionId = e.execution?.id ?? 'unknown';
const node = e.node?.name ?? e.lastNodeExecuted ?? 'unknown node';
const message = String(e.error?.message ?? 'Unknown error');
let severity = 'warning';
if (/401|403|auth|credential/i.test(message)) severity = 'critical';
if (/payment|invoice|production|crm/i.test(workflow + ' ' + message)) severity = 'critical';
if (/429|timeout|ETIMEDOUT|ECONNRESET/i.test(message)) severity = 'warning';
const dedupeKey = `n8n-error:${workflow}:${node}:${message.replace(/\d+/g, '#').slice(0, 120)}`;
const runbookUrl = `https://nodbot.ru/runbooks/n8n-error-workflow/#${encodeURIComponent(workflow.toLowerCase().replace(/\s+/g, '-'))}`;
const text = [
`🚨 n8n ${severity.toUpperCase()}`,
`Workflow: ${workflow}`,
`Node: ${node}`,
`Execution: ${executionId}`,
`Error: ${message.slice(0, 500)}`,
`Runbook: ${runbookUrl}`
].join('
');
return [{ json: { severity, dedupe_key: dedupeKey, telegram_text: text, execution_url: e.execution?.url, runbook_url: runbookUrl } }];
Почему нужен dedupe key
Если внешний API отвечает 429 десять минут подряд, команда должна получить один инцидент с обновлением, а не сотню сообщений. Dedupe key можно хранить в Postgres, Redis или Google Sheets, но для production лучше durable storage.
Готовый workflow JSON: скачать и импортировать ¶
Полный workflow JSON доступен для импорта. Внутри оставлены placeholder credentials для Telegram и storage-ноды.
{
"name": "Nodbot - n8n Error Workflow Telegram alert",
"nodes": [
{ "name": "Error Trigger", "type": "n8n-nodes-base.errorTrigger", "purpose": "Получить failed execution" },
{ "name": "Classify severity", "type": "n8n-nodes-base.code", "purpose": "Собрать severity, dedupe_key и runbook URL" },
{ "name": "Check dedupe", "type": "n8n-nodes-base.postgres", "purpose": "Не слать одинаковый алерт каждую минуту" },
{ "name": "Send Telegram alert", "type": "n8n-nodes-base.telegram", "purpose": "Отправить короткий диагностический алерт" },
{ "name": "Create incident comment", "type": "n8n-nodes-base.httpRequest", "purpose": "Опционально записать событие в CRM/Notion/Jira" }
],
"connections": "Error Trigger → Classify severity → Check dedupe → Telegram → Incident log"
}
Пошаговая настройка Error Workflow в n8n ¶
- Создайте Telegram bot и добавьте его в рабочий чат инцидентов.
- Импортируйте workflow JSON и замените Telegram credential.
- Настройте Postgres/Redis dedupe storage с TTL.
- Назначьте этот workflow как Error Workflow для production-сценариев n8n.
- Создайте runbook: кто отвечает, что проверить и как откатить изменение.
Тесты алертов, runbook и anti-spam ¶
curl -X POST "https://YOUR-N8N-DOMAIN/webhook/test-error-workflow" -H "Content-Type: application/json" --data @error-workflow-telegram-alert-payload.jsonДополнительно принудительно сломайте тестовый workflow через Stop And Error node. В Telegram должны прийти workflow name, node, execution_id, severity и ссылка на runbook.
Production-риски алертинга ¶
- Один общий чат для всего. Critical-ошибки тонут в информационных уведомлениях.
- Нет ссылки на execution. Инженер тратит время на поиск нужного запуска.
- Stack trace целиком в Telegram. Можно случайно раскрыть токены и персональные данные.
- Нет dedupe. Один сбой внешнего API создаёт лавину сообщений.
- Error Workflow не назначен. Шаблон есть, но production-сценарии его не используют.
Полезные ссылки и документация ¶
Смотрите также: Retry и DLQ для HTTP Request, Проверка подписи webhook, ENV-переменные n8n. Официальная документация: n8n error handling, Error Trigger node, Telegram Bot API.
Критерии готовности ¶
- Любой failed production workflow отправляет диагностический алерт.
- В сообщении есть execution URL, workflow name, node и короткая ошибка.
- Повторяющиеся ошибки дедуплицируются.
- Critical-ошибки отделены от warning.
- У каждого critical-сценария есть runbook и ответственный.
Nodbot настроит Error Workflow, Telegram/Jira алерты, retry, DLQ и runbook-и для ваших production-автоматизаций.
Настроить мониторинг