Grafana的告警規則是附加在一個個"Graph Panel"上。Grafana僅支持大部分數據源的告警,如Graphite、Prometheus、InfluxDB、Elasticsearch、MySQL等,但不支持對Zabbix數據源的告警,Zabbix本身就是一個強大的監控告警系統。
另外,Grafana的告警規則僅支持在Graph Panel上配置,且不支持帶有變量,即其它諸如Table Panel、Stat Panel或者帶有模板變量的Dashboard中的Graph Panel均不支持配置告警規則。
綜上,我們大致可以知道Grafana的核心還是在數據可視化,告警功能也僅是促進Grafana這款產品更趨於完善。
要實現郵件告警功能,需完成以下三步設置:
1、在Graph Panel配置告警規則,面板設置如下圖所示:
① Rule(規則),可設置規則名稱Name,評估(檢查)間隔Evaluate every,持續多長時間for後仍然滿足告警條件就開始告警,即在for的這段時間,告警是處於Pending狀態。
② Conditions(條件),WHEN的聚合函數包括last()、avg()、min()、max()、sum()、count()、median()等等。OF後面的query(A,1m,now)含義是:A表示Metrics中選項卡爲A,查詢的時間範圍是從現在(now)到1分鐘前這段時間間隔。若query(B,6m,now-2m)則表示Metrics中選項卡爲B,查詢的時間範圍是6分鐘前到2分鐘前這段時間間隔。IS ABOVE 80 是超出閾值80,也可以是IS BELOW(低於)或者IS OUTSIDE RANGE(超出範圍)等設置。上圖示例含義就是:查詢Metrics中選項卡爲A,時間間隔是近1分鐘且當前值超過80就滿足告警條件。
③ No Data & Error Handling,告警規則對查詢返回無數據或者查詢出現錯時的處理。當無數據或者爲空時,可以設置狀態有No Data,Keep Last State,Ok三種。當查詢出錯或者超時時,可以設置狀態爲Alerting,Keep Last State二種。
④ Notifications(通知),用於設置將告警通過什麼告警通道(Send to用於設置告警通道channel)發出,這裏默認就會選擇Dev,原因是在創建Notification channel時啓用了Default(send on all alerts)。Message用於添加告警的詳細信息。
⑤ Tags(標籤),用於添加標籤以及標籤值,可忽略。
2、修改/etc/grafana/grafana.ini,配置SMTP
[smtp]
enabled = true
host = smtp.163.com:465
user = [email protected]
password = AuthTokencode
skip_verify = true
from_address = [email protected]
from_name = Grafana
重啓grafana
systemctl restart grafana-server
說明:上述使用163郵箱發送告警郵件時,password爲賬號的授權碼,需登錄163郵箱在設置中開啓客戶端授權,否則會報"550 User has no permission"。以前發個告警郵件都沒有這麼難啊。
3、Notification Channel(通知通道)配置,面板設置如下:
可以爲不同的業務組創建不同的通知通道,例如,運維通道爲Ops,研發爲Dev。然後可以爲一個Metrics指定多個通知通道。
Name爲通道名稱
Type爲通道類型,此處選Email,也可選擇釘釘告警或者Alert Manager等告警類型。
Default(send on all alerts)開啓後,表示在所有Graph Panel中配置告警規則時默認都會選用此通道。該選項默認爲關閉。
Include image開啓後,表示是發送告警圖片。
Disable Resove Message開啓後,表示發送恢復郵件,默認關閉。
Send reminders開啓後,還需設置下方的發送間隔,表示發送告警郵件的間隔,默認關閉表示若某個告警發生後即使持續很長時間也僅發送一次郵件。
多個郵箱地址間用分號";"隔開。
點擊Send Test出現以下提示即設置成功。
最後收到的告警郵件如下:
總結:現在互聯網郵件管理的還是非常嚴格,各大雲廠商如阿里雲的服務器都禁用了25端口,想測試發個郵件都有難度,還有可能就是被當垃圾郵件過濾了。