文章出处:https://medium.com/@maiccaejfeng/grafana-alert-%E5%91%8A%E8%AD%A6%E4%BD%BF%E7%94%A8-email-%E9%80%9A%E7%9F%A5%E7%9A%84%E7%94%A8%E6%B3%95-8e62c208457d
監控圖表的狀態變化,並發出告警透過 gmail 通知管理者。
目標
圖表(Panel)產生告警(Alert),告警發送 email 通知(notification)給管理者。例如,一個顯示資料量的折線圖,在資料量低於 1 的時候(即沒有資料),發出告警,並且將此告警透過 gmail 通知管理者。
前置作業
- 打開本機的 Grafana。打開 Terminal,輸入以下指令 :
$ brew update
$ brew reinstall grafana
$ brew tap homebrew/services
$ brew services start grafana 或是 $ brew services restart grafana - 在瀏覽器輸入 http://localhost:3000/login 登入。預設帳密為 admin/admin。
- 本次 Grafana 版本 v6.7.0。
1. 建立 Data Source
在選單 Configuration > Data Sources 的地方,建立一個 Elasticsearch 的 Data Source,目標是所有「lm-」開頭的 index,時間欄位使用「@timestamp」:
![](https://miro.medium.com/max/1362/1*fhTWymFSmIzDKXcZ90soiQ.png)
![](https://miro.medium.com/max/1244/1*JSiXmvw6LEDvG4sBJI4t1Q.png)
按下綠色 Save & Test,出現「Index OK. Time field name OK.」的綠色訊息即為成功。
![](https://miro.medium.com/max/1892/1*qLL-YGc9m4pGd4Vtas61TA.png)
2. 建立 Dashboard
在選單 Create > Dashboard 的地方,建立一個名為「ES 192.168.70.174 lm-*」的 Dashboard。在「Dashboard Settings」設定 dashboard 名稱。
![](https://miro.medium.com/max/1624/1*LN-3a2NAeTaL4RPJDM-lDw.png)
3. 建立 Panel
按「Add panel」新增圖表。預設圖表即為表示「資料量」的折線圖。故僅有在編輯圖表的 Visualization 處,將 legend 的顯示關閉,以及在 General 處,將圖表命名為「資料量」即可。
![](https://miro.medium.com/max/1134/1*7vTgCNUEZ4N_-QqsXbMYSA.png)
![](https://miro.medium.com/max/1118/1*l_177HJzRRbmlekkNTBf8A.png)
獲得表示資料量的折線圖:
![](https://miro.medium.com/max/1614/1*__MqlKxl6juzyOzIlX4ROg.png)
4. 在 Grafana 設定 SMTP Server
參考文章「Grafana Alerting and Email Notifications」,用 Visual Studio Code 打開本機的 grafana.ini 檔(位於 /usr/local/etc/grafana/grafana.ini),找到 SMTP 的設定區塊,修改成以下設定。其中「my.gmail.address」填入用來發信的 gmail 帳號,「my.gmail.password」填入該 gmail 的密碼。
![](https://miro.medium.com/max/1380/1*fLSFSAx4X1S2Id2jB9yYJw.png)
修改好後儲存檔案,到 Terminal 重新啟動 Grafana(指令 $ brew services restart grafana)。
5. 設定 gmail
注意,用 gmail 的話,需要在 gmail 設定將「兩步驟驗證」關閉,並且將「低安全性應用程式存取權」開啟。
![](https://miro.medium.com/max/1704/1*Ijx3LnUbVhTapNoaXI7PQA.png)
![](https://miro.medium.com/max/1704/1*cNRyCkXpgf1ohTxKIXkcZA.png)
6. 建立 Notification Channel
在選單 Alerting > Notification channels 的地方,建立一個 notification channel。一個 notification channel 有點像是一封 email 的收件人名單,收件人可以是一個人,也可以是一群人。在「Name」欄位對這個 notification channel 取名,因為目前是給 dashboard「ES 192.168.70.174 lm-*」產生告警的時候發送 email 通知,所以取名為「192.168.70.174 lm-* Admin」。「Type」選擇「Email」。在「Addresses」填入收件人名單。
![](https://miro.medium.com/max/2022/1*fyHaCa8pi1kYzrqojSiq7A.png)
按下 Send Test 測試,即可收到 Test notification 的測試 email 表示設定成功:
![](https://miro.medium.com/max/2844/1*FnPiKp5lUEOOvTHXP36-hw.png)
7. 建立告警(Create Alert)
到 dashboard 的目標 panel 編輯 panel,在 Alert 頁籤按下 Create Alert 建立告警。
![](https://miro.medium.com/max/1658/1*fYvKJefumscTf5fmeZB79g.png)
按下 Test Rule 測試:
![](https://miro.medium.com/max/1310/1*nCUF0mhAZPkW8DEXkHMTkw.png)
8. 設定告警通知
在 Alert 頁籤的 Notifications 區塊,設定 Send to 為步驟 6. 設定的 notification channel「192.168.70.174 lm-* Admin」,在 Message 欄位填入想傳達的訊息。然後儲存 dashboard。
![](https://miro.medium.com/max/1152/1*y_uHkvUWoj8tH3K4oTfOCg.png)
9. 建立 Alert List
新增一個 panel,在 Visualization 頁籤選擇 panel 類型是「Alert List」:
![](https://miro.medium.com/max/1594/1*MTsL9K0qbqxOEWOJzsfIFg.png)
10. 收到告警 email
可於設定的 email 收到告警通知:
![](https://miro.medium.com/max/2840/1*7Kzwu_7QLD27yskvwsqdoQ.png)
11. 持續收到告警通知
發現雖然無法設定「每隔一段時間,持續發送告警通知 email」,但當告警狀態改變的時候,例如從 Alerting(表示異常)轉為 OK(表示正常),或是從 OK 轉為 Alerting,也會發送 email 通知,因此也可以達到監控的效果。只是如果告警狀態一直維持在 Alerting 的狀態的話,並不會持續發送 email。
將 Panel「Alert List」的 Visualization 設定修改為 Show「Recent state changes」:
![](https://miro.medium.com/max/848/1*FlzQFnR429I1Jr5jpuXiIg.png)
可以在 dashboard 上看到告警狀態的變化:
![](https://miro.medium.com/max/1594/1*qhFViExAMajFBtGqBEBG6A.png)
除了第一次 OK 的訊息以外,其餘 7 次狀態變化都有寄 email 通知。也算是有監控到啦!
完成!!