Tích hợp Grafana - Cảnh báo hạ tầng

Gửi cảnh báo Grafana tới Echobell qua webhook để nhận thông báo đẩy hoặc cuộc gọi tức thì. Hướng dẫn thiết lập từng bước kèm mẫu cảnh báo.


Grafana là giải pháp phân tích và giám sát mã nguồn mở phổ biến, được hàng nghìn tổ chức dùng để trực quan hóa số liệu, log và trace. Bằng cách tích hợp Grafana với Echobell, bạn có thể nhận thông báo tức thì khi các số liệu của bạn kích hoạt cảnh báo — dù đó là CPU cao, áp lực bộ nhớ, dịch vụ lỗi hay bất kỳ điều kiện nào khác đang được giám sát.

Hướng dẫn toàn diện này sẽ dẫn bạn qua toàn bộ quá trình thiết lập cảnh báo Grafana với Echobell, từ cấu hình cơ bản tới các chiến lược quản lý cảnh báo nâng cao.

Điều kiện cần có

Trước khi bắt đầu, hãy đảm bảo bạn có:

  • Một tài khoản Echobell với ít nhất một kênh đã tạo (Bắt đầu tại đây)
  • Quyền truy cập một instance Grafana (khuyến nghị phiên bản 8.0 trở lên, phiên bản 9.0+ để tương thích tốt nhất)
  • Quyền quản trị để cấu hình thông báo cảnh báo trong Grafana (thường cần vai trò Admin hoặc Editor)
  • Hiểu biết cơ bản về dashboard và số liệu của Grafana
  • Nắm được hạ tầng giám sát và yêu cầu cảnh báo của bạn

Tổng quan thiết lập

Quá trình tích hợp gồm năm bước chính, thường mất 10-15 phút để hoàn thành:

  1. Tạo một kênh Echobell - Lập một kênh riêng cho cảnh báo Grafana
  2. Cấu hình mẫu thông báo - Thiết kế cách cảnh báo hiển thị trên thiết bị của bạn
  3. Lấy webhook URL - Lấy endpoint webhook riêng của kênh
  4. Thiết lập contact point trong Grafana - Cấu hình Grafana để gửi cảnh báo tới Echobell
  5. Tạo alert rule trong Grafana - Xác định điều kiện nào sẽ kích hoạt thông báo

Sau khi cấu hình xong, cảnh báo sẽ tự động chảy từ Grafana tới thiết bị của bạn theo thời gian thực.

Hướng dẫn từng bước

Tạo một kênh Echobell

  1. Mở ứng dụng Echobell
  2. Tạo một kênh mới (ví dụ: "Grafana Alerts")
  3. Chọn một màu dễ nhận biết

Cấu hình mẫu thông báo

Thiết lập các mẫu giúp định dạng cảnh báo Grafana một cách hiệu quả:

Mẫu tiêu đề:

{{alertName}} - {{status}}

Mẫu nội dung:

🔔 Alert: {{alertName}}
📊 Metric: {{metric}}
📈 Value: {{value}}
⏰ Time: {{time}}
ℹ️ Message: {{message}}

Các mẫu này hoạt động ăn khớp với cấu trúc payload cảnh báo của Grafana.

Lấy webhook URL

  1. Trong phần cài đặt kênh, tìm mục Kích hoạt (Triggers)
  2. Sao chép webhook URL được cung cấp
  3. Giữ bí mật URL này vì nó sẽ được dùng trong phần cấu hình của Grafana

Cấu hình contact point trong Grafana

  1. Trong Grafana, vào AlertingContact points
  2. Nhấp New contact point
  3. Đặt các giá trị sau:
    • Name: "Echobell"
    • Type: "Webhook"
    • URL: Webhook URL của Echobell
    • HTTP Method: POST
    • Content type: application/json
  4. Cấu hình mẫu tin nhắn:
{
  "alertName": "{{ .alertName }}",
  "status": "{{ .status }}",
  "metric": "{{ .metric }}",
  "value": "{{ .value }}",
  "time": "{{ .time }}",
  "message": "{{ .message }}",
  "externalLink": "{{ .dashboardURL }}"
}

Tạo alert rule

  1. Vào AlertingAlert rules
  2. Tạo một alert rule mới hoặc sửa một rule sẵn có
  3. Trong phần cấu hình rule:
    • Đặt điều kiện phù hợp cho các số liệu của bạn
    • Chọn contact point "Echobell"
    • Cấu hình tiêu chí đánh giá cảnh báo

Kiểm thử tích hợp

Để kiểm tra thiết lập của bạn:

  1. Tạo một alert rule thử nghiệm với điều kiện sẽ kích hoạt nhanh
  2. Chờ điều kiện được thỏa mãn
  3. Kiểm tra ứng dụng Echobell xem có thông báo cảnh báo không
  4. Xác nhận mọi biến cảnh báo đều hiển thị đúng
  5. Nhấp vào thông báo để mở dashboard Grafana được liên kết

Kiểu thông báo cho cảnh báo

Khi đăng ký kênh cảnh báo Grafana, hãy cấu hình các kiểu thông báo quan trọng sau:

  • Dùng Khẩn cấp (Time Sensitive) cho cảnh báo hệ thống nghiêm trọng và thông báo khẩn
  • Dùng Cuộc gọi (Calling) cho sự cố nặng, vượt ngưỡng nghiêm trọng hoặc cảnh báo khẩn cấp
  • Dùng Thông thường (Normal) cho cảnh báo mang tính thông tin và thông báo thường lệ

Thực hành tốt nhất khi quản lý cảnh báo

Tổ chức mẫu cảnh báo

Giữ mẫu cảnh báo rõ ràng và nhất quán giữa các kênh:

Title: {{alertName}} - {{status}}
Body: 
Server: {{instance}}
Metric: {{metric}}  
Current: {{value}}
Threshold: {{threshold}}
  • Dùng định dạng có cấu trúc - Sắp xếp thông tin với nhãn rõ ràng
  • Đưa vào thông tin then chốt - Tên số liệu, giá trị, ngưỡng, hệ thống bị ảnh hưởng
  • Dùng emoji tiết chế - 🚨 cho nghiêm trọng, ⚠️ cho cảnh báo, ✅ cho đã khắc phục
  • Giữ tiêu đề ngắn gọn - Nhắm tới 5-8 từ nêu bật ngay vấn đề
  • Kiểm thử mẫu - Gửi cảnh báo thử để xác nhận định dạng trước khi triển khai

Cấu hình cảnh báo nghiêm trọng

Đặt ngưỡng cảnh báo hợp lý để tránh bị bội thực thông báo:

  • Tránh cảnh báo quá mức - Đặt ngưỡng ở mức cần hành động, không phải mức chỉ đáng chú ý
  • Dùng hysteresis - Cấu hình ngưỡng khác nhau cho lúc cảnh báo và lúc phục hồi
  • Gom nhóm cảnh báo liên quan - Kết hợp các điều kiện liên quan vào một alert rule
  • Đặt chu kỳ đánh giá hợp lý - Cân bằng giữa độ nhạy và mức độ ồn ào
  • Cân nhắc khung thời gian - Kiểm tra điều kiện nhiều lần trước khi phát cảnh báo

Ví dụ chiến lược đặt ngưỡng:

# Bad: Alert at 50% CPU (too sensitive)
cpu_usage > 50

# Better: Alert at 80% for 5 minutes
avg_over_time(cpu_usage[5m]) > 80

# Best: Progressive alerts
# Warning at 70% sustained, Critical at 90%

Đặt tên cảnh báo có ý nghĩa

Hãy đặt cho cảnh báo những cái tên mô tả, nêu bật ngay:

  • Cái gì đang được giám sát (CPU, bộ nhớ, ổ đĩa)
  • Ở đâu vấn đề xảy ra (production, staging, một instance cụ thể)
  • Vì sao nó quan trọng (dịch vụ người dùng đang dùng, cơ sở dữ liệu trọng yếu)

Ví dụ tốt:

  • "Production Database - High Connection Pool Usage"
  • "API Gateway - Response Time Degradation"
  • "Worker Node 3 - Disk Space Critical"

Nên tránh:

  • "Alert 1", "Test Alert", "High CPU"

Cung cấp đủ ngữ cảnh

Nội dung cảnh báo của bạn nên trả lời được:

  • Chuyện gì đã xảy ra? Điều kiện cụ thể nào đã kích hoạt
  • Ở đâu? Hệ thống, dịch vụ hay instance nào
  • Nghiêm trọng đến đâu? Giá trị hiện tại so với ngưỡng
  • Khi nào? Dấu thời gian của cảnh báo
  • Làm gì tiếp theo? Liên kết tới dashboard hoặc runbook liên quan

Cấu hình mức độ ưu tiên

Dùng kiểu thông báo của Echobell một cách có chiến lược:

  • Thông thường: Cảnh báo mang tính thông tin, thông báo đã khắc phục, cảnh báo không gấp
  • Khẩn cấp: Cảnh báo quan trọng cần được xử lý trong vài giờ
  • Cuộc gọi: Sự cố production nghiêm trọng cần phản hồi ngay lập tức

Ánh xạ mức độ nghiêm trọng của Grafana sang kiểu thông báo:

Critical + Production → Calling
High + Production → Time Sensitive  
Medium → Time Sensitive
Low → Normal
Info/Resolved → Normal

Bảo mật cảnh báo

Bảo vệ hạ tầng giám sát của bạn:

  • Giữ bí mật webhook URL - Chúng cho phép gửi thông báo mà không cần xác thực
  • Dùng biến môi trường - Đừng ghi cứng URL trong tệp provisioning của Grafana
  • Xoay vòng webhook định kỳ - Nhất là khi có thành viên rời nhóm
  • Theo dõi việc gửi webhook - Ghi nhận các lượt gửi thất bại và điều tra bất thường
  • Rà soát cấu hình cảnh báo - Thường xuyên xem lại ai có quyền sửa cảnh báo
  • Xác thực nguồn cảnh báo - Dùng cơ chế xác thực sẵn có của Grafana cho contact point

Quản lý vòng đời cảnh báo

Duy trì vệ sinh cảnh báo tốt:

  1. Rà soát định kỳ - Kiểm tra cảnh báo hằng quý để loại bỏ rule lỗi thời
  2. Ghi chú cảnh báo - Thêm mô tả giải thích vì sao mỗi cảnh báo tồn tại
  3. Theo dõi lịch sử cảnh báo - Xem cảnh báo nào phát nhiều nhất
  4. Tinh chỉnh ngưỡng - Điều chỉnh dựa trên dữ liệu lịch sử và tỷ lệ báo động giả
  5. Lưu trữ cảnh báo cũ - Tắt nhưng vẫn giữ lại rule cho những dịch vụ sắp ngừng
  6. Quản lý phiên bản - Dùng provisioning của Grafana để theo dõi thay đổi cảnh báo

Cân nhắc về hiệu năng

  • Tránh bão cảnh báo - Cấu hình gom nhóm và thời điểm hợp lý
  • Dùng notification policy - Định tuyến các mức nghiêm trọng khác nhau tới kênh phù hợp
  • Đặt khoảng chờ/lặp lại - Ngăn thông báo trùng lặp
  • Gom nhóm cảnh báo tương tự - Giảm lượng thông báo bằng cách tổng hợp
  • Cân nhắc thời điểm trong ngày - Dùng điều kiện để lọc theo giờ làm việc

Ví dụ thực tế

Cảnh báo CPU cao

Title: {{instance}} CPU Critical
Body: CPU usage: {{cpu_percent}}%
Duration: {{duration}}
Time: {{time}}
Dashboard: {{dashboard_url}}

Áp lực bộ nhớ

Title: Memory Warning - {{hostname}}
Body: Available: {{available_mb}}MB ({{percent_free}}%)
Threshold: {{threshold_mb}}MB
Action: Check memory-intensive processes

Dịch vụ ngừng hoạt động

Title: 🚨 {{service_name}} Unreachable
Body: Health check failed
Last success: {{last_successful_check}}
Impact: {{affected_users}} users affected
Runbook: {{runbook_url}}

Trường hợp sử dụng phổ biến

Giám sát hạ tầng

  • Ngưỡng sử dụng CPU, bộ nhớ, ổ đĩa
  • Thông lượng mạng và tỷ lệ mất gói
  • Tình trạng khả dụng và health check của dịch vụ
  • Giám sát trạng thái container và pod

Hiệu năng ứng dụng

  • Thời gian phản hồi xuống cấp
  • Tỷ lệ lỗi tăng
  • Cạn kiệt connection pool của cơ sở dữ liệu
  • Độ sâu hàng đợi và độ trễ xử lý

Số liệu kinh doanh

  • Bất thường về khối lượng giao dịch
  • Doanh thu mỗi phút sụt giảm
  • Thay đổi số người dùng đang hoạt động
  • Sắp chạm giới hạn tần suất gọi API

Giám sát bảo mật

  • Các lần đăng nhập thất bại
  • Mẫu truy cập bất thường
  • Cảnh báo chứng chỉ sắp hết hạn
  • Vi phạm quy tắc tường lửa

Tìm hiểu thêm chiến lược tích hợp trong bài blog về thông báo cuộc gọi cho Grafana.

Khắc phục sự cố

Nếu bạn không nhận được cảnh báo, hãy lần lượt thực hiện các bước chẩn đoán sau:

Webhook không kích hoạt thông báo

  1. Kiểm tra webhook URL đã sao chép đúng chưa

    • Vào kênh Echobell của bạn → Kích hoạt → Webhook
    • Sao chép URL đầy đủ, bao gồm cả https://hook.echobell.one/t/
    • Đảm bảo không có khoảng trắng hay ký tự thừa khi dán vào Grafana
  2. Kiểm tra kênh có đang hoạt động không

    • Mở ứng dụng Echobell
    • Vào kênh cảnh báo Grafana của bạn
    • Xác nhận nó không bị xóa hay lưu trữ nhầm
  3. Đảm bảo có người đăng ký đang hoạt động

    • Phải có ít nhất một người đăng ký thì mới nhận được thông báo
    • Kiểm tra danh sách người đăng ký của kênh
    • Xác nhận đăng ký của chính bạn đang hoạt động
  4. Kiểm tra cấu hình contact point của Grafana

    • Vào Alerting → Contact points trong Grafana
    • Mở contact point Echobell của bạn
    • Xác nhận URL khớp với webhook của kênh
    • Kiểm tra HTTP Method đã đặt là POST
    • Xác nhận Content-Type là application/json
  5. Kiểm tra cấu hình alert rule của Grafana

    • Vào Alerting → Alert rules
    • Mở rule cụ thể lẽ ra phải kích hoạt
    • Xác nhận rule đã được gắn với contact point Echobell của bạn
    • Kiểm tra notification policy có định tuyến tới đúng contact point không
  6. Xem lịch sử cảnh báo của Grafana

    • Vào Alerting → Alert rules
    • Nhấp vào rule của bạn → Show history
    • Xác nhận cảnh báo thực sự đang phát (chứ không ở trạng thái pending)
    • Kiểm tra xem có lỗi đánh giá nào không

Cảnh báo có phát nhưng không được gửi đi

  1. Thử gọi webhook trực tiếp

    curl -X POST https://hook.echobell.one/t/<channel-token> \
      -H "Content-Type: application/json" \
      -d '{"alertName": "Test", "status": "firing"}'

    Nếu bạn nhận được thông báo từ lệnh này nhưng không nhận được từ Grafana, vấn đề nằm ở cấu hình Grafana.

  2. Kiểm tra notification policy của Grafana

    • Vào Alerting → Notification policies
    • Xác nhận nhãn của rule khớp với quy tắc định tuyến của policy
    • Kiểm tra các vấn đề về thời gian (thời gian chờ gom nhóm, chu kỳ lặp lại)
  3. Xem log của Grafana

    • Tìm lỗi gửi webhook trong log của Grafana
    • Kiểm tra mã trạng thái HTTP (phải là 200)
    • Điều tra mọi lỗi timeout hoặc lỗi kết nối

Thông báo hiển thị sai

  1. Biến trong mẫu không khớp payload của Grafana

    • Grafana gửi các tên trường cụ thể như .alertName, .status, v.v.
    • Đảm bảo biến trong mẫu của bạn khớp với cấu trúc payload
    • Dùng nút "Test" của Grafana để xem payload thực tế
  2. Thông báo thiếu thông tin

    • Một số biến của Grafana có thể rỗng tùy theo cấu hình cảnh báo
    • Thêm giá trị dự phòng trong mẫu: {{alertName || "Unknown Alert"}}
    • Xem tài liệu Grafana để biết các biến mẫu có sẵn
  3. Lỗi phân tích JSON

    • Kiểm tra mẫu tin nhắn của Grafana có phải JSON hợp lệ không
    • Kiểm tra dấu nháy hoặc ký tự đặc biệt chưa được escape
    • Dùng công cụ kiểm tra JSON trực tuyến để xác thực cấu trúc payload

Vấn đề về thời điểm cảnh báo

  1. Cảnh báo đến chậm

    • Kiểm tra kết nối mạng của bạn
    • Xác nhận Grafana có thể kết nối tới máy chủ của Echobell
    • Xem lại chu kỳ đánh giá của Grafana (có thể gây trễ)
    • Kiểm tra thiết lập thời gian trong notification policy
  2. Thông báo trùng lặp

    • Xem lại thiết lập chu kỳ lặp lại trong notification policy
    • Kiểm tra xem có nhiều rule cùng phát cho một điều kiện không
    • Xác nhận kênh chỉ được cấu hình với một contact point
  3. Thông báo trong giờ im lặng

    • Chế độ Tập trung của iOS có thể ảnh hưởng tới việc nhận thông báo
    • Thông báo Khẩn cấp và Cuộc gọi có thể vượt qua một số chế độ Tập trung
    • Xem lại cài đặt thông báo trên thiết bị của bạn

Vẫn gặp sự cố?

Nếu bạn đã thử hết những cách trên mà vẫn gặp vấn đề:

  1. Bật log gỡ lỗi của Grafana

    • Thêm mục [log] vào grafana.ini với level = debug
    • Xem log để biết các lần gửi webhook và phản hồi
  2. Dùng tính năng test có sẵn của Grafana

    • Trong cài đặt contact point, dùng "Test" để gửi một cảnh báo mẫu
    • Cách này giúp xác định vấn đề nằm ở rule hay ở khâu gửi
  3. Thử một alert rule khác

    • Tạo một rule thử nghiệm đơn giản với điều kiện chắc chắn sẽ phát
    • Nếu rule thử chạy được mà rule production thì không, vấn đề nằm ở cấu hình rule
  4. Liên hệ hỗ trợ

    • Ghé Trung tâm hỗ trợ
    • Gửi email tới echobell@weelone.com kèm:
      • Phiên bản Grafana
      • Payload cảnh báo mẫu (đã xóa dữ liệu nhạy cảm)
      • Webhook URL (đã che token)
      • Những bước bạn đã thử
      • Kết quả mong đợi so với thực tế

Tài liệu và tài nguyên liên quan

Tài liệu Echobell

Tài nguyên Grafana

Tích hợp liên quan

Bài viết trên blog

Bước tiếp theo

Giờ khi Grafana đã được tích hợp với Echobell:

  1. Tinh chỉnh cảnh báo - Điều chỉnh ngưỡng dựa trên mẫu sử dụng thực tế
  2. Lập thêm kênh - Tạo các kênh riêng cho từng mức độ nghiêm trọng
  3. Khám phá tích hợp khác - Kết nối thêm công cụ với Echobell (xem tất cả tích hợp)
  4. Chia sẻ với cả nhóm - Thêm thành viên vào các kênh cảnh báo của bạn
  5. Ghi lại thiết lập của bạn - Viết runbook để xử lý từng loại cảnh báo cụ thể
  6. Đo hiệu quả cảnh báo - Theo dõi tỷ lệ báo động giả và thời gian phản hồi

Sẵn sàng giám sát thêm hệ thống khác? Hãy xem hướng dẫn tích hợp đầy đủ để biết các công cụ và nền tảng giám sát phổ biến khác.