Sổ tay kỹ thuật

Grafana Alerting – rule, contact point, notification policy

concept#grafana#alerting#prometheus· cập nhật 2026-11-06

Hiểu các thành phần của Grafana Alerting và cách label quyết định cảnh báo đi tới đâu, khi nào bị gom hoặc tắt tiếng.

Sửa trang này
Mục lục

Grafana Alerting (unified alerting) tách việc phát hiện sự cố khỏi việc gửi thông báo. Alert rule chỉ sinh ra alert instance có label; việc gửi đi đâu, gom thế nào, nhắc lại bao lâu do notification policy quyết định dựa trên label đó. Nhờ vậy đổi kênh nhận (Slack, email, webhook) không cần sửa rule.

Luồng cảnh báo

flowchart LR Q["Query (Prometheus, InfluxDB, ClickHouse)"] --> E["Expression: Reduce, Threshold"] E --> R["Alert rule (pending period)"] R -->|"instance + labels"| AM[Alertmanager của Grafana] S[Silence / mute timing] -.->|chặn| AM AM --> NP["Notification policy tree (matchers)"] NP --> CP1["Contact point: Slack #noc"] NP --> CP2["Contact point: email oncall"]

Thành phần

Thành phần Vai trò Ví dụ
Alert rule Query + điều kiện + pending period + label + annotation bps > 90% speed trong 5 phút
Evaluation group Nhóm rule trong một folder, cùng chu kỳ đánh giá interfaces, mỗi 1m
Alert instance Một series vi phạm điều kiện, mang label riêng source=pe1-hni, name=Hu0/0/0/0
Label Cặp key/value dùng để định tuyến và gom nhóm severity=critical, team=noc
Annotation Nội dung mô tả, không dùng để định tuyến summary, description, runbook_url
Contact point Kênh nhận + template tin nhắn Slack, email, webhook, PagerDuty, Telegram
Notification policy Cây định tuyến theo label matcher team=noc → Slack #noc
Silence Tắt tiếng tạm thời theo matcher, có thời hạn Bảo trì pe1 từ 01:00 tới 03:00
Mute timing Khung giờ lặp lại không gửi thông báo Cuối tuần cho cảnh báo severity=info

Trạng thái của rule

Trạng thái Ý nghĩa
Normal Không vi phạm điều kiện
Pending Đang vi phạm nhưng chưa đủ pending period
Alerting (Firing) Vi phạm liên tục quá pending period, gửi thông báo
No Data Query không trả dữ liệu, hành vi tuỳ chỉnh được (No Data, Alerting, OK)
Error Query hoặc datasource lỗi, hành vi tuỳ chỉnh được

Với telemetry, mất dữ liệu thường quan trọng như vượt ngưỡng. Đặt No Data → Alerting cho rule kiểm tra thiết bị còn gửi metric, hoặc dùng absent_over_time (PromQL cheatsheet).

Notification policy và label routing

Policy là một cây. Gốc là default policy, các policy con có matcher (=, !=, =~, !~). Alert đi từ trên xuống, dừng ở policy con đầu tiên khớp, trừ khi bật Continue matching.

Thiết lập Ý nghĩa Mặc định
Group by Gom các instance cùng giá trị label thành một thông báo grafana_folder, alertname
Group wait Chờ trước khi gửi thông báo đầu tiên của nhóm mới 30s
Group interval Chờ trước khi gửi cập nhật khi nhóm có alert mới 5m
Repeat interval Nhắc lại khi alert vẫn firing 4h

Ví dụ cây cho NOC:

Matcher Contact point Group by
(default) email noc@example.com alertname
severity = critical PagerDuty / Slack #noc-critical alertname, source
team = core, severity =~ warning|info Slack #core source

Khi nào dùng

Tình huống Gợi ý
Đã có dashboard trên Grafana, nhiều datasource (Influx, ClickHouse, Prometheus) Grafana Alerting
Chỉ dùng Prometheus, muốn rule nằm cạnh metric Prometheus rule + Alertmanager
Quản lý rule bằng Git Provisioning alerting (YAML) hoặc Terraform provider, tương tự Grafana provisioning
Bảo trì có lịch cố định Mute timing; bảo trì đột xuất dùng silence

Không đặt giá trị thay đổi liên tục (bps hiện tại, timestamp) vào label của rule: mỗi giá trị mới thành một instance mới và gây spam. Đặt chúng vào annotation.