B i M A P

Grafana | How to Setup Alert in Grafana

使用 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 可確認結果

Grafana Alert - Alert Rule Step 1


Alert evaluation behavior - 檢查行為設定

  • Evaluate every : 1m for 5m 表示每一分鐘檢查一次且持續超過五分鐘才告警,其中 for 1m 表示檢查頻率為一分鐘一次;for 5m 表示達到觸發條件的持續時間超過五分鐘。
  • 同一個群組的規則會使用同一個檢查時間和持續時間。

Grafana Alert - Step 2


Add details for your alert - 其他設定

  • Rule name 為規則名稱
  • Folder 為規則分類資料夾
  • Group 為規則群組(群組應用在包含檢查行為及通知行為)
  • Summary and annotations 可額外添加除了說明、敘述或相連結的圖表

Grafana Alert - Step 3


Notifications - 通知設定

  • 可設定額外添加到檢查結果的 labels

Grafana Alert - Step 4


規則編輯的其他說明

  • 添加圖表連結至告警中,需要在 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。
  • 若勾選時,則將只發送觸發時的告警,回到正常值時不會另外通知。

Grafana Alert - Step 5


Message Template - 客製化通知內容

路徑:Alerting -> Contact Point -> + New template

客製化告警通知內容的步驟如下:

  • 新增 template 並編輯內容
{{ define my.message }}
      內容
  {{ end }}
  • 在 contact point 中帶入
{{ template "my.message" . }}


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。

Grafana Alert - Step 6


    規則檢查及告警通知流程

    依照規則設定查詢並檢查是否觸發條件,所有檢查結果分為以下狀態:

    • normal為檢查結果在正常閥值內
    • pending為規則觸發條件但仍未超過持續時間
    • alerting為規則觸發條件且超過持續時間

    規則檢查流程為:

    • 依照規則設定的檢查頻率及持續時間建立查詢結果的狀態
    • 狀態為 alerting 的結果,依照觸發通知設定,透過設定的通知方法發送通知
    • 通知內容依照通知方法中的 template 發送
    延伸閱讀
    jessie.shen的大頭照
    Grafana 達人

    在大數據時代,如何透過視覺化圖表及分析工具,是每間數位轉型中的公司必學的課程。在多不勝數的軟體工具中,我們期望透過ELK、InfluxDB、Grafana等開源軟體,與企業夥伴一同邁向成功!