天天看點

Grafana 告警配置并發送郵件

一.安裝并啟動sendmail

yum install -y sendmail

systemctl start sendmail      

二.修改Grafana配置檔案,設定發件人

vim /etc/grafana/grafana.ini

在[smtp] 标簽下 修改配置

[smtp]
enabled = true
host = localhost:25

from_address = your address
from_name = your name      

其他還可以配置使用者名密碼來使用公網上有驗證的smtp服務,但是這裡我用的是本地smtp,不需要配置這些

Grafana 告警配置并發送郵件

儲存好配置檔案之後,重新開機Grafana

systemctl restart grafana-server      

三.配置Notification channels

點選頁面左邊的鈴铛,并選擇 Notification channels

Grafana 告警配置并發送郵件

然後選擇 new channels 建立一個 channel,填寫 Name 和收件人郵箱位址

Grafana 告警配置并發送郵件

然後點選send Test ,提示成功後,剛填寫的郵箱應該就可以收到如下内容的測試郵件

Grafana 告警配置并發送郵件

 四.添加 Alert Rules

首先到進入dashboard頁面,左鍵點選你想添加Alert告警的 graph 面闆的面闆名,并點解 EDIT,進入面闆編輯頁面。

注意:隻有graph panel 也就是圖表面闆(一般都是折線圖和柱狀圖或者點狀圖)可以添加Alert ,其他面闆不支援。

Grafana 告警配置并發送郵件

然後點選 左邊的鈴铛圖示,并點選 Create Alert 進入 Alert的設定頁面

Grafana 告警配置并發送郵件

這裡解釋下上圖中六個參數的作用

1.Rule Name :Alert規則 的名稱

2 每多少時間評估一次

3的輸入框裡有個提示的圖示,滑鼠移上去會看到提示,提示的

大概意思是:如果配置了這個參數,那麼當查詢結果超過閥值的時候,首先會從ok狀态轉到pedding狀态,此時是不會發郵件的,而當 超過閥值的狀态的持續時間 過了配置的持續時間時,才會從pending 狀态 轉成 Alerting狀态,并發送通知郵件

在上圖中我設定的是Evaluate every 1m for 5m, 也就是說每分鐘計算一次是否超過閥值,如果超過閥值的時間持續了5分鐘,就發送郵件通知,如果沒有的話,隻是從ok 狀态轉為 pedding狀态.

發送了通知之後還是會每分鐘檢查一次,狀态恢複正常之前是不會再發郵件的。

而且我們配置的prometheus還有個拿資料的時間間隔,這個也會影響資料的計算。

4、5、6為觸發Alert的條件

4是查詢的類型,可選項有很多,最大值、最小值、平均值等等

5.這裡有三個參數 , 第一個是查詢的編号,這個是在Queries裡面設定的,稍後再講,每個查詢在每個時間點的結果值就構成了我們看到的圖。 第二個是多少時間内, 第三個是開始時間

6. 是閥值

上圖的配置簡單來說就是 :

A查詢從目前時間開始的1分鐘内的結果值的平均值如果高于閥值0.002,将會從ok狀态 轉變為 pedding狀态,但不會發郵件,然後每分鐘查詢一次,如果高于閥值的持續時間超過五分鐘,就會發郵件通知。

上圖中還有個警告,這個警告的意思是:警報查詢中不支援模闆變量

這個問題剛碰到的時候确實不知道錯哪了。

grafana發送報警的json格式:

{
    "evalMatches": [
        {
            "value": 623.2111111111111, 
            "metric": "averageSeries(test_api.formal.*.cr_api_cost.cost.p99)", 
            "tags": null
        }
    ], 
    "message": "????", 
    "ruleId": 1, 
    "ruleName": "test_api接口", 
    "ruleUrl": "http://localhost:3000/d/rh3bYAfnz/test-ji?fullscreen=true&edit=true&tab=alert&panelId=16&orgId=1", 
    "state": "alerting", 
    "title": "[Alerting] test_api接口"
}      

其實這個是 Queries裡的問題,我們先切換到Queries 的設定頁面

Grafana 告警配置并發送郵件

這裡我們就看到了 我之前說的查詢編号了,每個編号都有一個查詢,然後每個查詢有個Legend ,也就是對應着圖旁邊的某個圖例,是以某個查詢在每個時間點的結過值的連線,就是折線圖中的某條折線。

我們剛剛設定Alert的時候用的是查詢A, 也就是system這條線的查詢,在查詢語句中就用到了模闆變量$node

Grafana 告警配置并發送郵件

這個變量是在 dashbord setting 裡設定的

Grafana 告警配置并發送郵件
Grafana 告警配置并發送郵件

其實就是一個全局的變量,可以自定義值,也可以讀取配置檔案裡的某個标簽的值

,在查詢中使用。設定好的變量 可以在dashboard的頂部進行選擇切換。 

Grafana 告警配置并發送郵件

 顯然,之前的報錯是不支援我們在 Alert 查詢中使用這個模闆變量的,是以我們把他改成具體的值。

Grafana 告警配置并發送郵件

 改了以後就不會報錯了,然後我們回到 Alert的配置頁面

Grafana 告警配置并發送郵件

 添加一個或多個需要通知的,配置好的聯系人,并在Message填寫你自定義的通知内容。

配置好了之後,記得儲存dashboard的設定

Grafana 告警配置并發送郵件

然後當Alert的條件被滿足後,就會發郵件了。

我們可以在Alert rules 頁面看到我們添加 的Alert Rules ,并且可以暫停某個 Alert ,也可以從這裡點選某個Alert 進入編輯頁面進行編輯。

Grafana 告警配置并發送郵件

繼續閱讀