2016年10月15日土曜日

redash のアラート機能を試してみた (Webhook 編)

概要

redash のアラート機能を試してみました
今回は Webhook のアラートを IFTTT を使って試してみました
redash サーバは Ubuntu 上の Docker に構築します

環境

  • Ubuntu 16.04 LTS
  • Docker 1.12.2
  • docker-compose 1.8.0
  • redash 0.11.1+b2095

事前準備

Ubuntu 上に Docker をインストール方法はこちら
インストールした Docker 上に redash を構築する方法はこちら

などを参考に redash が動作する環境を構築しておいてください

データソースの作成とクエリの作成

これも過去の手順に沿って作成してください
今回は MySQL をデータソースとして進めていきます

通知先の設定 (Webhook)

とりあえずお手軽な Webhook を試します
Webhook 先は IFTTT の Maker を使います
Maker の設定はここでは詳しく紹介しませんが、 Maker 用の URL に Webhook が送信されると Slack に通知するようなレシピを作成します
try_redash_alert_config_maker.png

Maker の通知先の URL のフォーマットは以下の通りです
イベント名やトークンは各自のものに置き換えてください

https://maker.ifttt.com/trigger/{event}/with/key/xxxxxx-xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxx

この情報を redash のアラートの通知先として設定します

まず通知先の設定ですが右上の設定ボタンっぽいやつから -> ALERT DESTINATIONS -> New Alert Destination と選択します
try_redash_alert_creating_alert_dst.png

すると Alert Destination を追加する画面になるので先ほどの IFTTT の Maker の情報を入力していきます
try_redash_alert_input_alert_dst.png

Name は適当に設定してください
Type に「Webhook」を設定します
Username, Password がベーシック認証があれば入力してください
Url は IFTTT の Maker で発行された URL を入力してください

問題なければ「Save」を選択します

アラートの作成

アラートの作成には事前にクエリを作成する必要があります

先ほど作成した Alert Destination にアラートをする設定を行います
上部の Alert から「New Alert」で追加します
try_redash_alert_creating_alert.png

するとアラートを設定する画面になります
まず、Query の欄に事前に作成しておいたクエリを入力します
今回は「count」というクエリを準備しました、あるカラムの値をカウントするだけのクエリになります
その後設定しなければいけないのは Op と Reference の部分です
ここにクエリで取得した値の条件を設定します
例えば「greater than」「0」と設定するとクエリの値が 0 以上のときにアラートが発泡されることになります
Rearm seconds はとりあえず空にしておきます (後述します)
できたら「Save」を押しましょう
try_redash_alert_input_alert.png

スクリーンショットを見るとわかりますが、赤帯でメールの設定がされていないという旨の警告が表示されます
今回はとりあえずメールでの通知は行わないのでそのままで OK です

Save を押すと右側に Notifications の設定が表示されます
デフォルトだとメールになっているので、プルダウンで先ほど作成した Maker の通知先を設定しましょう
設定したら「Add」をクリックしてください
try_redash_alert_add_notification.png

これでアラートの作成は完了です

動作確認

通知が来ているか確認してみましょう
クエリに設定したクロール時間が来て、そのときにアラートに設定された条件を満たしていると通知されます
アラートの一覧画面を見て「TRIGGERED」になっていれば通知が来るはずです
try_redash_alert_list_alerts.png

アラートが解消すると OK という表示に戻ります
try_redash_alert_list_alerts_ok.png

自分が検証した感じだとこの OK になったときにもアラートが飛んでくるようです

Tips

  • Rearm seconds について
    例えばこれを 30 秒とかで設定しておくと TRIGGERD の状態が 30 秒続くと再度通知してくれます
    基本は TRIGGERD <-> OK が切り替わったときにだけ通知してくれるのですが、Rearm seconds を設定しておくと TRIGGERD のときには設定した間隔で通知を続けてくれます
    何も設定していないと切り替わったときにだけ通知してくれます

最後に

redash のアラート機能の 1 つである Webhook 機能を試してみました
今回は IFTTT と連携しました
IFTTT と連携することで簡単に redash にアラート+通知機能を追加することができました

Webhook を使っていて少し困ったのはアラートが発生したときの情報を Webhook 先でどうやって取得するのかわかりませんでした
要するにアラートが発生したときの値 (クエリで取得した値) を Slack に載せたかったのですが、取得する方法がわからず諦めました
Webhook 先を自分のサーバとかにしてリクエストをデバッグしたりすればもしかしたらヘッダとかに含まれているかもしれません

あとは、通知としてメールと Slack と Hipchat に対応しているのでこの辺も試してみたいと思います

0 件のコメント:

コメントを投稿