Monitoring System - Nhận cảnh báo lỗi qua Zalo với n8n

@Nguyễn Ngô Thượng//~4 phút đọc0
Chia sẻ:
Monitoring System - Nhận cảnh báo lỗi qua Zalo với n8n

Tổng quan

Trong vận hành hệ thống (DevOps) hoặc kinh doanh (E-commerce), tốc độ phản ứng với sự cố là yếu tố sống còn. Email thì chậm, Slack/Telegram đôi khi bị trôi tin nhắn. Tại Việt Nam, Zalo là kênh liên lạc nhanh nhất và luôn được chú ý.

Trong bài viết này, chúng ta sẽ xây dựng hệ thống Monitoring & Alerts để gửi thông báo quan trọng về nhóm Zalo của team vận hành.

Use Cases

  • 🚨 Server Down: Thông báo ngay khi website bị sập (UptimeRobot).
  • 🐛 System Error: Báo lỗi runtime từ backend (Sentry).
  • 💰 New Order: Ting ting khi có đơn hàng mới (WooCommerce/Shopify).
  • 📉 Low Stock: Cảnh báo kho hàng sắp hết.
  • 📊 Daily Report: Báo cáo doanh thu cuối ngày.

Workflow Architecture

Luồng xử lý cơ bản:

  1. Trigger: Sự kiện từ bên ngoài (Webhook) hoặc Lịch định kỳ (Schedule).
  2. Process:
    • Phân tích dữ liệu lỗi/sự kiện.
    • Định dạng tin nhắn (Markdown, màu sắc).
    • Xác định mức độ ưu tiên (Priority).
  3. Action: Gửi vào nhóm Zalo "Alerts Center".

Bước 1: Chuẩn bị Nhóm Zalo

  1. Tạo một nhóm Zalo mới: "🚨 System Alerts".
  2. Add tài khoản bot (chạy n8n) vào nhóm.
  3. Lấy Group ID của nhóm này (dùng node ZaloGroup -> Operation Lấy Nhiều Nhóm để tìm ID).

Bước 2: Webhook Trigger (Ví dụ: UptimeRobot)

Giả sử bạn dùng UptimeRobot để monitor website. Khi web sập, nó sẽ gọi Webhook.

  1. Trong n8n, tạo node Webhook.
  2. Method: POST.
  3. Copy URL Webhook (VD: https://n8n.your-domain.com/webhook/uptime-alert).
  4. Paste URL này vào setting Alert Contact của UptimeRobot.

Bước 3: Format Tin Nhắn (Markdown)

Đây là bước quan trọng để tin nhắn dễ đọc và gây chú ý. Node ZaloSendMessage hỗ trợ markdown màu sắc.

Sử dụng node Function để tạo message template:

const eventType = $json.body.alertTypeFriendlyName; // "Down" or "Up"
const monitorName = $json.body.monitorFriendlyName;
const url = $json.body.monitorURL;
const details = $json.body.alertDetails;

let message = "";
let priority = "Normal";

if (eventType === "Down") {
  // Alert màu đỏ cho lỗi
  message = `🚨 **CẢNH BÁO: SERVER DOWN!**\n\n`;
  message += `Target: [red]${monitorName}[/red]\n`;
  message += `URL: ${url}\n`;
  message += `Error: ${details}\n\n`;
  message += `⚠️ Team Dev vui lòng kiểm tra ngay! @All`;
  
  priority = "Urgent"; // Đánh dấu tin khẩn cấp
} else {
  // Màu xanh cho phục hồi
  message = `✅ **HỆ THỐNG ĐÃ KHÔI PHỤC**\n\n`;
  message += `Target: [blue]${monitorName}[/blue]\n`;
  message += `Duration: 15 mins\n`;
  
  priority = "Normal";
}

return {
  message: message,
  priority: priority,
  groupId: "group_alert_id"
};

Bước 4: Gửi Cảnh Báo

Sử dụng node ZaloSendMessage:

  • To: {{$json.groupId}}
  • Message: {{$json.message}}
  • Priority: {{$json.priority}}

Kết quả hiển thị trên Zalo:

🚨 CẢNH BÁO: SERVER DOWN!

Target: <span style={{color: "red"}}>Main Website URL: https://diginno.net Error: Connection Timeout (522)

⚠️ Team Dev vui lòng kiểm tra ngay! @All

(Tin nhắn sẽ có viền đỏ do Priority = Urgent)


Nâng cao: Đơn hàng mới (E-commerce)

Nhận thông báo "Ting ting" khi có đơn hàng mới từ WooCommerce/Shopify.

Workflow:

  1. Trigger: WooCommerce Trigger (Order Created).
  2. Format:
    🎉 **CÓ ĐƠN HÀNG MỚI!**
    
    Khách hàng: **Nguyễn Văn A**
    Sản phẩm: [blue]2x Áo thun Premium[/blue]
    Tổng tiền: [red]500.000đ[/red]
    Thanh toán: COD
    
    👉 <a href="link_admin">Xử lý đơn ngay</a>
    
  3. Action: Gửi vào nhóm "Chốt đơn".

Tips & Best Practices

1. Tránh Spam (Deduplication)

Nếu hệ thống lỗi liên tục, Webhook có thể gọi 100 lần/phút. Bạn không muốn Zalo bị nổ notification.

Giải pháp: Sử dụng node Deduplication (nếu có) hoặc lưu state vào Redis/Static Data.

  • Chỉ gửi alert đầu tiên.
  • Chỉ gửi lại sau 30 phút nếu lỗi vẫn còn.

2. Phân loại Nhóm (Segmentation)

Đừng gửi tất cả vào 1 nhóm chung.

  • Nhóm Dev: Nhận lỗi Server, Database logs.
  • Nhóm Sale: Nhận thông báo đơn hàng, khách hàng mới.
  • Nhóm Marketing: Nhận báo cáo chiến dịch hàng ngày.

3. @Mention hợp lý

  • Lỗi nghiêm trọng (Site chết): @All để đánh thức cả team.
  • Lỗi nhỏ (Warning): Không mention để tránh làm phiền.

4. Interactive Alerts (Tương tác)

Gửi kèm link action:

  • "Khởi động lại server" (Link tới Webhook n8n khác trigger lệnh restart).
  • "Đánh dấu đã xử lý" (Update trạng thái vào Database).

Kết luận

Hệ thống Monitoring qua Zalo giúp team của bạn phản ứng nhanh hơn đáng kể so với Email hay Slack. Với n8n, bạn có thể tùy biến mọi thứ từ nội dung, màu sắc đến logic gửi tin.

Bài tiếp theo, chúng ta sẽ đi vào use case cuối cùng: Data Collection & Analytics - thu thập dữ liệu chat để phân tích insight khách hàng.

Bài viết hữu ích?

Chia sẻ để nhiều người biết đến!

Chia sẻ:

>_ LLM-Friendly Copy

Copy as Markdown to use with ChatGPT, Claude, or other AI tools

821 words|5,037 characters

Bài viết liên quan

Khám phá thêm những bài viết cùng chủ đề với Monitoring System - Nhận cảnh báo lỗi qua Zalo với n8n

Bài viết hữu ích? Hãy kết nối với Diginno!

Chúng tôi giúp doanh nghiệp SME ứng dụng AI và automation vào quy trình làm việc - từ tư vấn chiến lược đến triển khai thực tế.