使用 Grafana
除了建立方便監控設備、系統的儀表板,更可以透過告警設定讓使用者可以第一時間收到設備、系統的異常通知。以下我們針對在
Grafana 中設定告警的流程及特殊的設定做說明:
Alert Rule - 檢查規則編輯
路徑:Alerting -> Alert Rules -> +New alert rule
Set a Query and alert condition - 查詢及條件設定
- Query: 自原始資料庫查詢資料
- Reduce: 降維計算欲檢查的KPI值
- Threshold: 設定閥值並點擊 Make this the alert condition 設為判斷條件
- 點擊 Preview 可確認結果
Alert evaluation behavior - 檢查行為設定
- Evaluate every : 1m for 5m 表示每一分鐘檢查一次且持續超過五分鐘才告警,其中
for 1m 表示檢查頻率為一分鐘一次;for 5m
表示達到觸發條件的持續時間超過五分鐘。 - 同一個群組的規則會使用同一個檢查時間和持續時間。
Add details for your alert - 其他設定
- Rule name 為規則名稱
- Folder 為規則分類資料夾
- Group 為規則群組(群組應用在包含檢查行為及通知行為)
- Summary and annotations 可額外添加除了說明、敘述或相連結的圖表
Notifications - 通知設定
- 可設定額外添加到檢查結果的 labels
規則編輯的其他說明
- 添加圖表連結至告警中,需要在 Summary and annotations 同時新增對應的
Dashboard UID 及 Panel ID - 透過 Summary and annotations
添加說明及敘述時,可使用變數讓說明更彈性(變數引用可參考官網文件)
Contact Point - 通知方法設定
路徑:Alerting -> Contact Point -> + New contact point
Contact point type - 通知類型設定
- Email: 需要在 Grafana 設定檔(grafana.ini)中設定發送 email 使用的 SMTP
- Line: 需至
Line Notify 官網取得 token - Microsoft Teams: 需要在 teams 聊天視窗中新增 IncommingWebhook 並取得 Webhook
url - 其他包含 Discord、Slack、Webhook 等很多通知方法可供使用者自由選擇
Optional setting - 設定通知內容
- 一般建議先以預設的通知內容來發送告警通知,再依需求調整。
- 通知內容設定建議搭配 Template 設定(將在Template的部分說明)
Notification setting - 設定需通知告警類型
- 一般預設在告警觸發並超過持續時間時及回到正常時都會發送告警,觸發的告警稱為
Firing 而回到正常的通知稱為 Resolves。 - 若勾選時,則將只發送觸發時的告警,回到正常值時不會另外通知。
Message Template - 客製化通知內容
路徑:Alerting -> Contact Point -> + New template
客製化告警通知內容的步驟如下:
- 新增 template 並編輯內容
{{ define my.message }} 內容 {{ end }}
- 在 contact point 中帶入
{{ template "my.message" . }}
- template 可參考官網說明文件
Notification Policies - 觸發通知設定
路徑:Alerting -> Notification policies -> + New policy
Matching labels - 通知條件設定
- 當檢查結果為 Alerting,包含且符合此設定相關 labels 時,將會觸發通知。
- 這裡可以使用的 label 包含原來規則查詢結果中自帶的 labels,也包含
Notification 設定中額外添加的 labels。 - 透過自帶的 labels,可以設定以設備類型或設備 IP
等資訊做分群通知,例如:若自帶的 labels 中包含 equipmentType,則可以透過
equipmentType=nas/switch/server/firewall 等資訊來分別通知負責該設備的人員。 - 透過額外添加的 labels
可設定到分級通知,例如:規則設定時,不同的閥值分別額外添加
alertLevel=info/warn/crit 等 labels,則可以依照等級通知人員。
Contact Point - 選擇相應的通知方法
- 可選擇在之前 Contact Point 中已設定的通知方法
Override general timing - 設定規則群組及重複告警的時間區間
- Group wait: 當地一次觸發規則時,預設等待30s確認相同 group
中是否有其他規則觸發,若有將一併發送通知並建立 Alert groups。 - Group interval: 當已有的 Alert groups 中有規則觸發,預設等待30s確認相同的
group 中是否有其他規則觸發,若有將一併發送通知。 - Repeat interval: 當規則觸發時且持續未解決,不重複告警的區間,預設為4hrs。
規則檢查及告警通知流程
依照規則設定查詢並檢查是否觸發條件,所有檢查結果分為以下狀態:
- normal為檢查結果在正常閥值內
- pending為規則觸發條件但仍未超過持續時間
- alerting為規則觸發條件且超過持續時間
規則檢查流程為:
- 依照規則設定的檢查頻率及持續時間建立查詢結果的狀態
- 狀態為 alerting 的結果,依照觸發通知設定,透過設定的通知方法發送通知
- 通知內容依照通知方法中的 template 發送