一.安裝并啟動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
systemctl restart grafana-server
三.配置Notification channels
點選頁面左邊的鈴铛,并選擇 Notification channels
然後選擇 new channels 建立一個 channel,填寫 Name 和收件人郵箱位址
然後點選send Test ,提示成功後,剛填寫的郵箱應該就可以收到如下内容的測試郵件
四.添加 Alert Rules
首先到進入dashboard頁面,左鍵點選你想添加Alert告警的 graph 面闆的面闆名,并點解 EDIT,進入面闆編輯頁面。
注意:隻有graph panel 也就是圖表面闆(一般都是折線圖和柱狀圖或者點狀圖)可以添加Alert ,其他面闆不支援。
然後點選 左邊的鈴铛圖示,并點選 Create Alert 進入 Alert的設定頁面
這裡解釋下上圖中六個參數的作用
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 的設定頁面
這裡我們就看到了 我之前說的查詢編号了,每個編号都有一個查詢,然後每個查詢有個Legend ,也就是對應着圖旁邊的某個圖例,是以某個查詢在每個時間點的結過值的連線,就是折線圖中的某條折線。
我們剛剛設定Alert的時候用的是查詢A, 也就是system這條線的查詢,在查詢語句中就用到了模闆變量$node
這個變量是在 dashbord setting 裡設定的
其實就是一個全局的變量,可以自定義值,也可以讀取配置檔案裡的某個标簽的值
,在查詢中使用。設定好的變量 可以在dashboard的頂部進行選擇切換。
顯然,之前的報錯是不支援我們在 Alert 查詢中使用這個模闆變量的,是以我們把他改成具體的值。
改了以後就不會報錯了,然後我們回到 Alert的配置頁面
添加一個或多個需要通知的,配置好的聯系人,并在Message填寫你自定義的通知内容。
配置好了之後,記得儲存dashboard的設定
然後當Alert的條件被滿足後,就會發郵件了。
我們可以在Alert rules 頁面看到我們添加 的Alert Rules ,并且可以暫停某個 Alert ,也可以從這裡點選某個Alert 進入編輯頁面進行編輯。