⚙️
【Cloud Data Fusion】パイプライン失敗時のSlack通知方法
はじめに
この記事は、Google Cloud Platform Advent Calendar 2021の16日目の記事になります。
Cloud Data Fusion (以降、CDF)[1] を本格的に利用し始めて8ヶ月が経ちました。
今回はパイプライン実行が失敗した場合のSlackへの通知方法をまとめてみました。
アラート通知方法
CDFのパイプライン実行エラー検知方法については
過去投稿したブログも参考にしていただければと思います。
パイプライン実行の失敗をSlackチャネルに通知するには、Make HTTP Call[2]を利用します。
利用環境
Product | version |
---|---|
CDAP | 6.4.1 (Basic) |
CDF Private IP | 有効 |
Region | asia-northeast1 |
【補足】
・ Developerエディションでも動作しました。
・ CDFインスタンスをPublicで構築しても動作しました。
実施手順
- Slackの設定
- curlコマンドでの通知テスト
- Make HTTP Callの設定
- 実施結果確認
1. Slackの設定
- まず、Slackの設定がいくつか必要になります。
- こちらの記事を参考に対応します。
【必要な対応】
- アプリの作成
- スコープの設定 (Bot Token Scopesのみ)
- ワークスペースへのアプリインストール
- チャネルへのアプリ追加
2. curlコマンドでの通知テスト
-
Bot User OAuth Token
を使って通知したいチャネルにメッセージを送ります。 - チャネルはパブリックとプライベートどちらも通知可能です。
パラメータ | 内容 | サンプル値 |
---|---|---|
token | APIを実行するためのアクセストークン | xoxb-668814143316-2441900189495-E0TZsRkP18KjsKVNByhZwIIG |
channel | 通知先のSlackチャネルID | C1234567890 |
text | チャネルに通知するメッセージ | test_alert |
- ターミナルからcurlコマンドでSlack APIにPOSTします。
❶リクエストボーディに全部指定するパターン
$ curl -X POST 'https://slack.com/api/chat.postMessage' \
-d 'token=xoxb-668814143316-2441900189495-E0TZsRkP18KjsKVNByhZwIIG' \
-d 'channel=C1234567890' \
-d 'text=test_alert'
❷パラメータをURL含めトークンだけリクエストヘッダーに指定するパターン
$ curl -X POST 'https://slack.com/api/chat.postMessage?channel=C1234567890&text=test_alert' \
-H 'Authorization: Bearer xoxb-668814143316-2441900189495-E0TZsRkP18KjsKVNByhZwIIG'
- 上記2つのパターンのどちらでも通知できます。
3. Make HTTP Callの設定
- 手順2の❷のcurlコマンドを参考にMake HTTP Callを設定します。
- Google Cloudの管理コンソールからCDFインスタンスにアクセスします。
- CDFの[Pipeline] > [Studio]を開きます。
- 画面上部の❶[Configure] > ❷[Pipeline alert]を開き、❸の[+]をクリックします。
- ❹[Make HTTP Call]をクリックします。
- ❺Run Conditionを
failure
、❻にパラメータ入りのURL
を入力します。
- ❼Request Headersに
アクセストークン
を入力し、❽の[Next]ボタンをクリックします。 - [Confirm]をクリックし、[Save]で保存します。
- 設定値は下記表の通りになります。
項目 | 必須 | 値 |
---|---|---|
Run Condition | - | failure |
URL | ● | https://slack.com/api/chat.postMessage?channel=C1234567890&text=test_alert |
HTTP Method | ● | POST |
Request Body | - | 空欄のまま |
Number of Retries | - | 空欄のまま |
Should Follow Redirects | - | trueのまま |
Request Headers(key) | - | Authorization |
Request Headers(value) | - | Bearer xoxb-668814143316-2441900189495-E0TZsRkP18KjsKVNByhZwIIG |
- あとは必要なパイプラインを構成後、[Deploy]ボタンを押してデプロイします。
4. 実施結果確認
- 最後にパイプラインの実行ですが、あえて失敗するように実行します。
- 失敗するとcurlコマンドで確認した時と同じものがSlackチャネルに届きます。
まとめ
さて、いかがでしたでしょうか?
スケジュール設定した定期ジョブが失敗したことを検知できないと
運用上かなり困ることになるので、このSlack通知は非常に便利な通知方法になります。
EMailでも通知させることは可能ですが、Slackベースの業務をしている企業では
メール通知では復旧対応が遅れてしまうことがありますよね。
ぜひ、皆様も試してみて頂ければと思います^^
Cloud Data Fusion 関連投稿
- 本格的なパイプライン作ってみた!
- プライベートインスタンスでS3からデータ収集する方法
- インスタンス作成でどハマりした話
- GCSバケット消えない問題
- パイプライン実行エラー検知方法
- ZIPファイルの取り込み時の苦戦とその解決方法
Discussion