Cảnh báo Email với Grafana: Đừng để hệ thống ‘ngỏm’ rồi mới biết

Monitoring tutorial - IT technology blog
Monitoring tutorial - IT technology blog

Dashboard đẹp nhưng server sập không ai hay

Bạn vừa dành cả tuần để dựng hệ thống giám sát với Prometheus và Grafana. Các biểu đồ CPU, RAM nhảy múa trông rất chuyên nghiệp trên màn hình lớn. Thế nhưng, vào lúc 2 giờ sáng, database bị treo khiến website sập hoàn toàn. Sáng dậy, bạn tá hỏa thấy hàng chục cuộc gọi lỡ từ sếp, còn dashboard thì hiện một đường kẻ đỏ lòm từ vài tiếng trước.

Dashboard dù lung linh đến đâu cũng chỉ là giám sát bị động (Passive Monitoring). Nếu không có người nhìn vào màn hình, mọi dữ liệu đều vô nghĩa. Thứ bạn thực sự cần là một cơ chế cảnh báo chủ động (Active Alerting). Hệ thống phải tự biết “rung chuông” báo động cho người chịu trách nhiệm ngay khi có biến cố.

Tại sao chúng ta thường bỏ lỡ sự cố?

Lỗi thường không nằm ở công cụ mà ở quy trình vận hành chưa tối ưu. Theo kinh nghiệm của mình, có 3 rào cản chính khiến việc giám sát thất bại:

  • Dữ liệu bị cô lập: Thông số chỉ nằm trong database của Prometheus, không có kênh đẩy ra ngoài.
  • Ngại cấu hình SMTP: Nhiều anh em e dè khi đụng vào file config của Grafana vì sợ sai cú pháp hoặc lỗi bảo mật Gmail.
  • Ngưỡng cảnh báo (Threshold) chưa chuẩn: Cảnh báo quá nhạy gây nhiễu, hoặc quá trễ thì thiệt hại đã xảy ra.

Dù Telegram hay Slack đang phổ biến, Email vẫn là kênh chính thống không thể thiếu. Nó giúp lưu lại vết tích sự cố (audit trail) để báo cáo và dễ dàng tích hợp vào các hệ thống ticketing như Jira hay ServiceNow.

3 bước cấu hình Grafana Alerting qua Email

Chúng ta sẽ thực hiện trên phiên bản Grafana v9/v10 với giao diện Alerting hợp nhất. Quy trình gồm: Cấu hình SMTP, thiết lập Contact Point và tạo Rule cảnh báo.

Bước 1: Kích hoạt SMTP trong file cấu hình

Grafana không tự gửi email mà cần thông qua một Mail Server. Nếu dùng Gmail, bạn bắt buộc phải tạo App Password (mật khẩu ứng dụng) thay vì dùng mật khẩu cá nhân.

Mở terminal và chỉnh sửa file cấu hình hệ thống:

sudo nano /etc/grafana/grafana.ini

Tìm đến mục [smtp]. Hãy xóa dấu chấm phẩy ; ở đầu mỗi dòng để kích hoạt các tham số sau:

[smtp]
enabled = true
host = smtp.gmail.com:587
user = [email protected]
password = your-app-password-16-ky-tu
from_address = [email protected]
from_name = Grafana Monitor

Lưu file và khởi động lại dịch vụ để áp dụng thay đổi:

sudo systemctl restart grafana-server

Bước 2: Tạo Contact Point trên giao diện UI

Đăng nhập vào Grafana, truy cập Alerting > Contact points và làm theo các bước:

  1. Nhấn + Add contact point và đặt tên dễ nhớ như Ops-Team-Email.
  2. Tại mục Integration, chọn Email.
  3. Điền các địa chỉ email nhận tin, cách nhau bằng dấu phẩy.
  4. Nhấn Test. Nếu inbox của bạn nhận được mail thử nghiệm, hệ thống đã thông suốt.

Bước 3: Thiết lập Alert Rule thực tế

Hãy thử tạo một cảnh báo khi CPU server vượt quá 90% trong 5 phút. Tại Alerting > Alert rules:

  • Query: Chọn Prometheus và nhập 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100).
  • Evaluation behavior: Đặt For5m. Điều này giúp lọc các trường hợp CPU chỉ tăng vọt (spike) trong vài giây rồi giảm ngay.
  • Details: Đặt tên “High CPU Usage” và gắn nhãn severity=critical.
  • Notifications: Chọn Contact Point đã tạo ở Bước 2.

Kinh nghiệm thực chiến: Tránh bẫy Alert Fatigue

Sai lầm phổ biến của mình trước đây là đặt cảnh báo cho mọi thứ. CPU > 70% báo, RAM > 80% báo, Disk > 85% cũng báo. Kết quả là một sáng thức dậy, mình nhận tới 500 email. Đây chính là hiện tượng Alert Fatigue (lờn cảnh báo).

Khi hộp thư tràn ngập mail rác, bạn sẽ bắt đầu lờ chúng đi. Đến khi sự cố thực sự nghiêm trọng xảy ra, nó sẽ bị chôn vùi trong đống thông báo vô thưởng vô phạt đó. Hãy áp dụng 3 quy tắc vàng:

  • Chỉ báo khi cần hành động: Nếu CPU lên cao nhưng hệ thống vẫn tự xử lý được, đừng gửi email. Chỉ báo khi cần con người can thiệp thủ công.
  • Gom nhóm thông báo (Grouping): Thay vì nhận 20 email cho 20 server cùng sập, hãy cấu hình Notification Policy để nhận 1 email chứa danh sách cả 20 server đó.
  • Tinh chỉnh ngưỡng định kỳ: Tải của ứng dụng thay đổi theo tháng. Hãy dành 15 phút mỗi tuần để xem lại các ngưỡng cảnh báo có còn phù hợp không.

Lời khuyên để quản lý vận hành chuyên nghiệp

Thay vì gửi mail đến từng cá nhân, bạn nên dùng Email Alias hoặc Mailing List như [email protected]. Cách này giúp đảm bảo khi có nhân sự nghỉ việc hoặc thay ca, bạn không phải sửa cấu hình thủ công trong Grafana.

Ngoài ra, hãy kết hợp đa kênh. Dùng Telegram cho các cảnh báo mức “Warning” để xử lý nhanh, và dành Email cho mức “Critical” để lưu trữ đối soát. Chúc anh em thiết lập thành công và có những giấc ngủ ngon, không còn giật mình vì sự cố bất ngờ!

Share: