Redash のアラート通知先を独自拡張する
この記事は Redash Advent Calendar 13日目の記事です。折返し地点ですね!
きっかけ
このツイートを見てやってみようと思いました。
Redashってプラグイン機構あるのかな…
— 睦月@インフラ技術…者? (@mutsuki99) 2018年12月12日
オリジナルの Destination 作ったのはいいんだけど、デプロイが Python ファイルのコピーってのがとてもいけてない感じがしている。環境変数のリスト見てる限りプラガブルな仕組みがある雰囲気なんだけどなぁ。
やりかた
コードをパッケージ化する
redash/destinations
に置いているコードを以下のような感じにパッケージ化します。
必ずしも 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
管理者ユーザーの追加などの設定は割愛します。
設定画面を見ると、アラートの通知先が追加されています。
まとめ
この手順は、去年書いたクエリランナーを追加するという記事とほとんど同じだったりします。
今朝、先のツイートを見るまでやってみようと思ったことがなかったのですが、結果として同じようにできたのでよかったです。