🚨

GoogleCloudで特定のログが発生した場合にSlack通知する

2024/04/04に公開

はじめに

こんにちはderaです。

本題とまったく関係はありませんが、先日、スペースマーケットチームで企業対抗駅伝に出て走ってきました。イベントがあると張り切って練習しちゃうキャラなんですが、思ったよりも練習に時間が割けずちょっと悔しい結果でした。

次の同じ大会はおおよよ1年後。今年より良い結果だしたろー、と思っています。

さて、今回の内容ですが、最近、BigQueryにあるデータを Cloud Workflows を使って加工するという事をやっています。その過程で、処理失敗時の通知をお手軽にSlackに通知する方法を調べたので備忘録として書き起こしました。

ロギングサービスを使ってSlackに通知する方法になるので、GoogleCloudを利用するほとんどの場合に利用できる方法になると思います。

通知チャンネルの作成

まずは、通知チャンネルの作成を行います。通知チャンネルとはどこに通知するかの設定です。

MobileDevice(GoogleCloudApp),GoogleChat,PageDuty,Slack,Webhooks,Email,SMS,Pub/Subといろんなところに通知を送ることができるようで、今回はSlackへの通知を作成します。

作成方法は検索バーに "通知チャンネル" と入力をして通知チャンネルページに遷移し、Slackセクションの"ADD NEW"から作成できます。お手軽です。

通知チャンネル

ログ条件の作成

次に通知対象とするログの絞り込み条件を作成します。

作成方法はログエクスプローラーで利用するクエリ言語と同一なので、ログエクスプローラーでログを絞り込めばOKです。

ログエクスプローラーでは指定された対象期間を絞り込む為のフィールドが表示されるので、事前にアプリケーションから対象にしたいログを出力しておくと、GUIで条件の組み立てができお手軽です。

ログエクスプローラー

クエリ言語の仕様はこのページに記載されています。シンプルな内容なので一度読むと良いと思います。
https://cloud.google.com/logging/docs/view/logging-query-language?hl=ja

アラートポリシーの作成

通知チャンネルとログ条件の作成が完了したら、2つを組み合わせてアラートポリシー作成をします。

ログベースのアラートポリシーはログエクスプローラーから作成可能で、条件作成と同様にログエクスプローラーに条件を入力したら、アラート作成ボタンからお手軽に作成できます。

登録には通知チャンネル、ログ条件以外に、重要度、自動クローズ期間、ラベル、通知の間隔、通知チャンネルなど指定できます。重要度、自動クローズ期間は、通知が発生した場合、インシデントとして管理される仕組みになっており、その期間となります。

もっと複雑な条件で通知ポリシーを組みたてたい場合にはここを参考にすると良いようです。
https://cloud.google.com/logging/docs/logs-based-metrics?hl=ja

途中で躓いたこと

お手軽に設定できましたが、GoogleCloudの不具合らしきものを踏んで途中でつまずきました。

通知ポリシー作成から通知チャンネルを作ると設定が完了しない

後述する通知ポリシー作成から一括で通知チャンネルを作る導線があるんですが、こちらから設定すると設定完了後のSlackからのリダイレクトが完了せず、設定が完了できませんでした。通知チャンネルの設定画面から追加すると正常に設定完了できました。

Slackに通知が飛ばない

開発環境でincidentに登録されるがSlackに通知が飛んでこない現状が発生しました。通知チャンネルと通知ポリシーを作り直しをして、通知が新しい方で通知が飛ぶようにはなったが、設定の差分を見ても原因がわからず困った事象が発生しました。簡単に設定できようが信頼性がない事にははじまらない機能ですので、勘弁してもらいたいです。

スペースマーケット Engineer Blog

Discussion