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:
- Tạo một kênh Echobell - Lập một kênh riêng cho cảnh báo Grafana
- 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
- Lấy webhook URL - Lấy endpoint webhook riêng của kênh
- Thiết lập contact point trong Grafana - Cấu hình Grafana để gửi cảnh báo tới Echobell
- 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
- Mở ứng dụng Echobell
- Tạo một kênh mới (ví dụ: "Grafana Alerts")
- 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
- Trong phần cài đặt kênh, tìm mục Kích hoạt (Triggers)
- Sao chép webhook URL được cung cấp
- 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
- Trong Grafana, vào Alerting → Contact points
- Nhấp New contact point
- Đặt các giá trị sau:
- Name: "Echobell"
- Type: "Webhook"
- URL: Webhook URL của Echobell
- HTTP Method: POST
- Content type: application/json
- 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
- Vào Alerting → Alert rules
- Tạo một alert rule mới hoặc sửa một rule sẵn có
- 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:
- Tạo một alert rule thử nghiệm với điều kiện sẽ kích hoạt nhanh
- Chờ điều kiện được thỏa mãn
- Kiểm tra ứng dụng Echobell xem có thông báo cảnh báo không
- Xác nhận mọi biến cảnh báo đều hiển thị đúng
- 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:
- Rà soát định kỳ - Kiểm tra cảnh báo hằng quý để loại bỏ rule lỗi thời
- 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
- Theo dõi lịch sử cảnh báo - Xem cảnh báo nào phát nhiều nhất
- 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ả
- 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
- 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
-
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
-
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
-
Đả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
-
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
-
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
-
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
-
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.
-
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)
-
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
-
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ế
- Grafana gửi các tên trường cụ thể như
-
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
-
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
-
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
-
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
-
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 đề:
-
Bật log gỡ lỗi của Grafana
- Thêm mục
[log]vào grafana.ini vớilevel = debug - Xem log để biết các lần gửi webhook và phản hồi
- Thêm mục
-
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
-
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
-
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
- Hướng dẫn tích hợp Webhook - Tìm hiểu sâu về cách webhook hoạt động
- Hệ thống mẫu - Nắm vững cú pháp mẫu thông báo
- Điều kiện - Lọc cảnh báo theo tiêu chí
- Kiểu thông báo - Hiểu về mức độ ưu tiên của cảnh báo
- Bắt đầu - Kiến thức cơ bản và thiết lập Echobell
Tài nguyên Grafana
- Tài liệu Grafana Alerting - Hướng dẫn cảnh báo chính thức của Grafana
- Contact Points - Cấu hình contact point của Grafana
- Notification Policies - Định tuyến và gom nhóm cảnh báo
- Alert Rules - Tạo và quản lý alert rule
Tích hợp liên quan
- Tích hợp Prometheus - Cảnh báo trực tiếp từ Prometheus
- Uptime Kuma - Giám sát uptime website
- GitHub Actions - Cảnh báo cho pipeline CI/CD
- Home Assistant - Thông báo cho nhà thông minh
Bài viết trên blog
- Bật thông báo bằng cuộc gọi cho cảnh báo Grafana - Chiến lược tích hợp Grafana nâng cao
- Không bao giờ bỏ lỡ một lần GitHub Actions thất bại - Thực hành tốt nhất khi cảnh báo CI/CD
- Thông báo theo khung giờ bằng điều kiện UTC - Lọc theo giờ làm việc
Bước tiếp theo
Giờ khi Grafana đã được tích hợp với Echobell:
- 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ế
- Lập thêm kênh - Tạo các kênh riêng cho từng mức độ nghiêm trọng
- 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)
- 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
- 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ể
- Đ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.