iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 27
2
AI & Data

[BI工具] 以Redash為資料視覺化方案之選擇與實踐系列 第 27

[Redash] Email Alert & Schedule

  • 分享至 

  • xImage
  •  

上一篇文中,我們設定好了 mail server,除了管控帳號方便,
還可以在 Redash 裡使用 Alert,當我們設定的條件被觸發的時候,就可以發信通知我們

設定 Alert Destinations

Redash 可選擇的 Alert Destinations 有不少,
也有大家科技業常使用到的 Slack,不過這裡我們選擇 Email

https://ithelp.ithome.com.tw/upload/images/20181104/20111638qLyCsP6e06.png

(ps. 對比之前使用的 4.0.1+b4038 版本,
5.0.1+b4850 又增加了 ChartWork 當成 Alert Destinations)

Name 可以隨意填、Subject Template 維持預設,
Addresses 雖然是必填,但因前篇文章是使用 Gmail 當成 mail server,
這裡的設定似乎不影響寄件人都是綁定的 Gmail Application 對應的 Google 帳戶,
就同樣使用 no-reply@example.com

https://ithelp.ithome.com.tw/upload/images/20181104/20111638iyIjbMokpa.png

設定 Alert

Alert 的設定要以某個 Query 為基底,
這裡我們使用 Google Spreadsheet 的 Query 來做範例,方便做修改:

https://ithelp.ithome.com.tw/upload/images/20181104/201116384fnT5PlvTz.png

搜尋是使用「名稱」而非 「QUERY_ID」,設定好 Query 後,
選擇要偵測的欄位 Value column,
再來設定比較的方法(Op) 大於、小於、等於 某個參照值(Reference),
此範例中選擇第一欄 value1 的第一列值如果大於 20 就會觸發 Alert 機制
(Rearm seconds 設為 60,是如果此機制重複被觸發,60秒才會寄一次信。)

https://ithelp.ithome.com.tw/upload/images/20181104/20111638sE6981gfub.png

同時記得要把 Notifications 加入 當此條 Alert 機制觸發時,
該寄 Email 給哪些帳號(沒設定的話,就是雖然有觸發,但不會發生任何事情)
此範例中是會寄信給 MarsW 這個帳號設定的信箱。

Alert 觸發

按照以上設定,當第一列的 value1 欄位值 > 20 的話,就會觸發 Alert 機制。
目前第一列的 value = 11,在 Alerts 頁面會看到剛才設定的 Alert 狀態為 「OK」,
代表著 Alert 有被設定成功,但目前的 Query 的資料還沒有觸發到 Alert 機制。

https://ithelp.ithome.com.tw/upload/images/20181104/20111638gjoMnhyOAj.png

一但將資料源 Google Spreadsheet 的值從 11-> 22 (22>20)
再在 Redash 的 Queries 頁面按下 Execute

https://ithelp.ithome.com.tw/upload/images/20181104/201116380Ks0a3yqNr.png

在 Alerts 頁面會看到剛才設定的 Alert 狀態變成了 「TRIGGERED」

https://ithelp.ithome.com.tw/upload/images/20181104/20111638njnZ9vg06o.png

同時信箱也會收到通知信,標題為預設的「(Alert狀態) Alert名稱」

https://ithelp.ithome.com.tw/upload/images/20181104/20111638YSxaMtcNn4.png

而因為 Rearm seconds 設為 60,
所以在 60 秒內反覆修改 Google Spreadsheet 第一列第一欄的值,
eg. 11-> 22 -> 23 -> 24 -> 11 -> 25
並重新 Execute Query,也不會重複收到通知信。

狀態說明 & 狀態更改再發信

  • OK:Alert 機制設定成功,但 Query 的結果尚未滿足設定的條件
  • TRIGGERED:Alert 機制設定成功,且 Query 的結果滿足設定的條件

如果把 Rearm seconds 設為 0 或為空,
此時 Alert 的機制會是當狀態更改才會發信
在本次的設定來說,以下列出各種情況及發信結果:

  • 11 (OK) -> 22 (TRIGGERED):發信
  • 22 (TRIGGERED) -> 23 (TRIGGERED) :不發信
  • 23 (TRIGGERED) -> 10 (OK):發信
  • 10 (OK) -> 11 (OK):不發信

Schedule

上面的設定中,如果原始資料來源變動了,
都需要回 Redash 的 Queries 頁面按下 Execute,才會更新資料
也才會跟著判斷是否觸發 Alert 機制,
但我們會希望這個 Alert 能更即時一點,
因此可以在該 Query 的左下角「Refresh Schedule」,調整自動更新時間
可以設定成每幾分鐘,或是定時。

不過這裡就不像 cronjob 可以設定的非常細緻,
也無法精準到秒數 (雖然 Alert 的 Rearm 的單位是秒數 = = ''' )

https://ithelp.ithome.com.tw/upload/images/20181104/20111638io8Di3vaX7.png


使用案例

公司雖然還沒有使用到 Alert 機制,
不過目前我們常使用到的 Redash 功能如果使用到 Alert 會方便許多:

  • 營業額偵測:可以設定每日/每月目標,達標時用 Alert 通知
  • 監測系統:可以設定只要有一台機器 offline 或有異常狀況(eg. 網路斷線、記憶體滿載),用 Alert 通知

另外,因為 Alert 資料只能追蹤某一欄的第一列值,
以此例來說是第一欄第一列,也就是是原本為 11 的那個值
換句話說,更改其他欄列的資料,都不會觸發 Alert。

對營業額偵測來說,只要 select sum 該日或該月的業績就可以達成 Alert,
但在監測系統上,同時要掌控多台機器,要能追蹤多個欄位,
可以用 SQL 去 把所有希望偵測的欄位,
用 邏輯值(OR/AND/NOT) 或 CASE 串起,最後得到布林值或是某數值,
再依此去設定對應的 Alert 條件。

題外話

本來把 Reference設為一個極小值
eg. 營業額偵測的話 就是=1 (不太可能有一天沒有任何營收)
然後把 Rearm seconds 設成一天的秒數,配合 一天一次的 Schedule,
就等於達到每日資料的 report 機制,直接收信就好,連 Redash 都不用開。

但 Redash 的信件 Template 似乎沒有其他介面可以修改,只能去底層改 code,
讓標題可以顯示 偵測的 value 或是內容為詳細的資料(目前只有 status 跟 alert_name),
所以暫時擱置不打算實作。

ps. 文章同步發表於 Medium


上一篇
[Redash] 設定 mail server (使用 Gmail)
下一篇
[Redash] 備份、還原、升級
系列文
[BI工具] 以Redash為資料視覺化方案之選擇與實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言