こんにちは!データ分析官のyokochanです。
最近データ基盤構築の案件に携わっており、そこでよくELTツールのMatillionを使うようになりました。
そんなMatillionについて最近使った機能です。
想定場面
Matillionのフローでエラーが発生したらSlackに通知を送る
前提
SlackのwebhookURLを取得しておきます。
こちらの記事が参考になりました。
Slack:Webhook URL取得してSlackに通知する
Slack以外の媒体に送る場合はその媒体のwebhookURLを使うことで同じことができます。
機能①:どこでエラーが起きたかによらず通知を送る
とにかくどこかでフローが失敗したらSlackに通知が来るという設定です。
手順①:「Project」メニューから「Manage Error Reporting」を選択
手順②:webhookURLの貼り付けと通知文の作成
取得したwebhookURLをコピペして「payload」で通知文を作成します。
プロジェクト名やジョブ名などの変数を使うことができます。
手順③:通知が送られてくるタイミングを設定
「Enabled」で「Manual runs」を選択していると「エラーが起きたら即時」で通知が来ます。
「scheduled runs」を選択していると「Maximum per interval」「interval」で設定したタイミングで「エラーが起きていたらまとめて」通知が来ます。
例えば、「Maximum per interval=30」「interval=Minute」としておくと30分おきに通知が来ます。
手順④:「Test」をクリックして接続確認
以下のようにメッセージが出たら成功です。
テストでもこんな感じで通知が来ます。
機能②:特定のフローでエラーが起きた時に通知を送る
特定のフローでエラーが起きた場合にSlackに通知が来るという設定です。
何でもかんでも通知を送るというよりはこちらの方が使うのではないでしょうか。
今回はあるOrchestrationJobが失敗したら通知が来るような簡単な例で説明します。
手順①:以下のようなOrchestrationJobを作成
「Run orchstration」で失敗したら通知を送りたいジョブを指定します。
Successの先には「End Success」を、Failureの先には「Bash Script」を置きます。
そうです、めんどくさいことはスクリプトを書いてしまおう!という考えです。
MatillionではBashの他にPython、SQLのスクリプトもコンポーネントとして扱うことができます。
手順②:Bash Scriptコンポーネントでスクリプトを記述
あとはBashのルールに従ってスクリプトを書くだけです。
ここはPython Scriptコンポーネントでも良いかもです。
一応イメージとして画像載せておきます。
まとめ
今回は本当に基本的な部分を書きましたが、payloadの設定/変数の設定/SharedJob化などなど実際の運用になると考えることはまだまだありそうです。
Matillionの世界も奥が深いです。
自分はまだまだ入り口付近ですが、くれぐれも皆さまMatillionの奥地で遭難しないようにしてくださいね。。