Redash のアラート通知先を独自拡張する

この記事は Redash Advent Calendar 13日目の記事です。折返し地点ですね!

adventar.org

きっかけ

このツイートを見てやってみようと思いました。

やりかた

コードをパッケージ化する

redash/destinations に置いているコードを以下のような感じにパッケージ化します。

github.com

必ずしも GitHub や Git を使わなくてもよいのですが、今回は説明を省きたいのでこれで進めます。

この記事の本題にはたいして関係ありませんが、この Destination はアラートを JSONL 形式でログファイルに書き出す。というものにしてみました。

Redash の requirements.txt を変更する

アラート通知のパッケージを requirements.txt に追加します。

-e git+https://github.com/ariarijp/redash-json-logger-destination.git#egg=redash-json-logger-destination-0.1.0

Redash の docker-compose.yml を変更する

検証には Docker を使用するので、docker-compose.yml の server と worker の environment に以下を追加します。

REDASH_ADDITIONAL_DESTINATIONS: "redash_json_logger_destination"

この REDASH_ADDITIONAL_DESTINATIONS 環境変数で、アラート通知先を追加することができます。

追加したいものが複数ある場合はカンマ区切りで設定できます。

ビルドする

requirements.txt の変更を反映したイメージをビルドします。

これにはかなり時間がかかるので気長に待ちましょう。

$ docker-compose build

起動してみる

これで準備は完了です。起動してみましょう。

$ docker-compose run --rm server create_db
$ docker-compose up -d

管理者ユーザーの追加などの設定は割愛します。

設定画面を見ると、アラートの通知先が追加されています。

f:id:ariarijp:20181213203749p:plain

f:id:ariarijp:20181213203907p:plain

まとめ

この手順は、去年書いたクエリランナーを追加するという記事とほとんど同じだったりします。

ariarijp.hatenablog.com

今朝、先のツイートを見るまでやってみようと思ったことがなかったのですが、結果として同じようにできたのでよかったです。