Cấu hình error workflow để n8n báo lỗi ngay qua Telegram

Bạn có một workflow n8n chạy tự động, đồng bộ dữ liệu, gửi email, xử lý webhook. Rồi một hôm nó fail mà bạn không biết. Mất nửa ngày mới phát hiện ra. Error workflow trong n8n giải quyết chính xác vấn đề này: mỗi khi workflow con gặp lỗi, n8n tự động kích hoạt một workflow riêng để xử lý, log, và, quan trọng nhất, gửi cảnh báo ngay qua Telegram. Bài này hướng dẫn bạn cấu hình từ A-Z, từ tạo Bot Telegram đến viết error workflow template chạy trên VPS Ubuntu 24.04.
Yêu cầu trước khi bắt đầu
- Một instance n8n đang chạy (tự host hoặc cloud). Nếu chưa có, tham khảo cài n8n trên VPS Ubuntu 24.04 bằng Docker Compose.
- Một tài khoản Telegram để tạo Bot.
- Quyền admin trên n8n (để vào Settings).
Vì sao nên dùng error workflow riêng thay vì xử lý trong từng workflow?
Nhiều người mắc sai lầm: nhồi nhét node “nếu lỗi thì gửi Telegram” vào cuối mỗi workflow. Cách này vừa lặp code, vừa dễ sót. Error workflow là một workflow đặc biệt được n8n gọi tự động khi bất kỳ workflow nào trong instance thất bại. Một lần cấu hình, áp dụng cho tất cả. Dễ maintain, dễ mở rộng (thêm Slack, email, Pushover… vào cùng một chỗ).
Bước 1 - Tạo Bot Telegram và lấy Token
Mở Telegram, tìm @BotFather. Gõ /newbot, đặt tên (vd n8n Error Alert Bot), username (phải kết thúc bằng bot, vd n8n_error_alert_bot). BotFather trả về token dạng: 7234567890:AAGk8f...-9sD4. Copy token này.
Tiếp theo, lấy Chat ID của bạn. Tìm bot vừa tạo, gửi một tin nhắn bất kỳ. Chạy lệnh sau trên terminal hoặc dùng curl: curl -s "https://api.telegram.org/bot/getUpdates". Trong JSON trả về, tìm "chat":{"id":123456789}, đó là Chat ID của bạn. Nếu kết quả rỗng, gửi thêm một tin nhắn nữa rồi chạy lại.
Bước 2 - Kích hoạt Error Workflow trong n8n
Vào n8n, vào Settings → Workflows. Kéo xuống mục Error Workflow. Bạn sẽ thấy danh sách các workflow hiện có. Chưa có workflow nào để chọn, qua bước 3 tạo nó trước.
Bước 3 - Tạo Error Workflow gửi Telegram
Tạo workflow mới, đặt tên Error Handler - Telegram.
3.1. Thêm node Webhook (bắt đầu)
Node đầu tiên là Webhook (hoặc Manual Trigger nếu bạn muốn test sau). Nhưng vì n8n gọi error workflow với dữ liệu đặc biệt, node đầu phải là Manual Trigger (để workflow có điểm bắt đầu). Khi kích hoạt làm error workflow, n8n sẽ tự động pass data vào node đầu, không cần webhook.
3.2. Xử lý dữ liệu lỗi
Thêm node Code, dán đoạn mã sau. Node này định dạng thông báo lỗi cho dễ đọc:
// Dữ liệu đầu vào là $input.first().json, chứa thông tin lỗi từ workflow gốc
const errorData = $input.first().json;
const workflowName = errorData.workflowName || 'Không xác định';
const errorMessage = errorData.errorMessage || errorData.error.message || 'Không có message';
const executionId = errorData.executionId || 'N/A';
const nodeName = errorData.nodeName || errorData.node?.name || 'N/A';
const timestamp = new Date().toISOString();
// Tạo thông báo gọn, đẹp
const text = `🚨 *Lỗi Workflow n8n*
*Workflow:* ${workflowName}
*Node:* ${nodeName}
*Execution ID:* ${executionId}
*Thời gian:* ${timestamp}
*Lỗi:* ${errorMessage}
*Chi tiết:* \`\`\`${JSON.stringify(errorData, null, 2)}\`\`\``;
return [{ json: { chatId: 'CHAT_ID_CUA_BAN', text: text, parse_mode: 'Markdown' } }];
Thay CHAT_ID_CUA_BAN bằng Chat ID bạn lấy ở Bước 1.
3.3. Gửi Telegram
Thêm node Telegram. Chọn action Send Message. Ở mục Chat ID, chọn Expression và nhập {{ $json.chatId }}. Ở Text, nhập {{ $json.text }}. Parse Mode chọn Markdown.
Dùng Bot Token đã lấy, tạo credential Telegram trong node này với Access Token là token của bạn.
3.4. Kích hoạt và gán làm Error Workflow
Bấm Save và Activate workflow này. Quay lại Settings → Workflows, ở mục Error Workflow chọn Error Handler - Telegram. Lưu.
Bước 4 - Test error workflow
Tạo một workflow test đơn giản: một node Manual Trigger nối với node Set cố tình config sai, ví dụ đặt giá trị số vào field yêu cầu JSON. Bấm Execute Workflow để workflow chạy và fail.
Kiểm tra Telegram: bạn phải nhận được tin nhắn từ bot với định dạng Markdown. Nếu không:
- Kiểm tra token và Chat ID đã đúng chưa.
- Mở console n8n (F12) xem có lỗi HTTP không.
- Vào error workflow, bấm Execute Workflow thủ công với sample data (có sẵn trong n8n) để debug node Telegram.
Bước 5 - Tinh chỉnh và mở rộng
5.1. Thêm retry logic
Trong error workflow, bạn có thể thêm node Wait và HTTP Request để gọi API n8n restart execution. Cẩn thận, restart vô hạn có thể tạo loop. Chỉ nên retry tối đa 2-3 lần với khoảng cách 1 phút.
5.2. Gửi nhiều kênh
Nhân bản node Telegram, đổi Chat ID. Hoặc thêm node Slack, email. Error workflow là trung tâm điều phối cảnh báo.
5.3. Lọc lỗi trùng
Nếu cùng một lỗi xuất hiện 10 lần trong 1 phút, bạn sẽ bị spam Telegram. Thêm node IF kiểm tra presence của execution ID trùng trong một khoảng thời gian (dùng database node như Redis hoặc biến môi trường n8n).
5.4. Ghi log ra file hoặc database
Thêm node Spreadsheet File (viết CSV) hoặc Postgres để lưu lỗi. Dùng chuyển n8n từ SQLite sang PostgreSQL nếu bạn muốn lưu log lỗi vào database chính.
Xử lý lỗi thường gặp
Lỗi: "Telegram node: Bad Request: chat not found"
Nguyên nhân: Chat ID sai hoặc bot chưa được phép gửi tin nhắn. Đảm bảo bạn đã gửi ít nhất một tin nhắn cho bot trước khi lấy Chat ID, và bot đó có quyền gửi tin nhắn đến chat đó (public channel thì thêm bot làm admin).
Lỗi: Error workflow không được gọi
Vào Settings → Workflows, xác nhận error workflow đã được chọn và đang ở trạng thái Active. Nếu n8n đang chạy queue mode (Redis), error workflow vẫn hoạt động, nhưng bạn cần kiểm tra worker log: journalctl -u n8n-worker -f.
Lỗi: "Cannot read properties of undefined" trong node Code
Dữ liệu lỗi từ n8n có cấu trúc thay đổi theo phiên bản. Dùng console.log(errorData) trong node Code (xem ở Output) để inspect cấu trúc thật, rồi điều chỉnh mapping cho phù hợp. Hoặc dùng optional chaining: errorData?.error?.message || 'N/A'.
Câu hỏi thường gặp
Error workflow có chạy được trên n8n cloud không?
Có. Error workflow là tính năng có sẵn trên mọi bản n8n, kể cả cloud. Nhưng nếu bạn dùng bản cloud miễn phí, giới hạn execution và storage có thể ảnh hưởng. Tự host n8n trên VPS cho bạn kiểm soát hoàn toàn error workflow và không lo quota.
Tôi có thể dùng error workflow với queue mode không?
Được. Khi bạn dùng queue mode với Redis, error workflow vẫn được kích hoạt tự động khi một execution fail trên bất kỳ worker nào. Xem thêm n8n queue mode với Redis.
Làm sao để tránh lỗi trùng lặp Telegram?
Thêm node Cache hoặc dùng biến môi trường N8N_PAYLOAD_SIZE_MAX để giới hạn dữ liệu. Cách đơn giản hơn: trong error workflow, dùng node Function kiểm tra executionId có trong một Set (lưu bằng biến global n8n) không, nếu có thì bỏ qua.
Error workflow có ảnh hưởng đến hiệu năng n8n không?
Không đáng kể. Error workflow chỉ chạy khi có lỗi, tần suất thấp. Nếu bạn có hàng ngàn workflow và tất cả đều fail liên tục, vấn đề không nằm ở error workflow mà ở thiết kế xử lý lỗi hoặc hạ tầng. Lúc đó cần tính đến việc chọn RAM cho n8n theo số workflow chạy song song.
Tôi có thể gửi lỗi đến group Telegram thay vì cá nhân không?
Có. Thêm bot vào group, lấy Chat ID của group (dùng getUpdates sau khi gửi tin nhắn trong group). Chat ID group thường bắt đầu bằng dấu - (số âm). Dùng ID đó trong node Telegram.
Bài viết liên quan
- Webhook n8n không nhận request, checklist xử lý theo thứ tự
- n8n queue mode với Redis, khi nào cần tách worker
- Backup n8n đúng cách, encryption key, database và credential
- Bảo mật n8n self-host, khoá webhook lạ và siết firewall


