技術情報

GCPのCloud Logging上のエラーを手軽にSlackで通知する

この記事について

GCPコンソールからCloud Loggingのクエリを作成してSlackに通知を送る方法を紹介します。
Cloud Loggingにログを出力していれば、Slack通知をPythonなどで実装することなく行なえます。
今回はSlackとしていますが、メールやSMSを通知先にすることも可能です。

GCP通知チャンネルにSlackを追加

Cloud Monitoringの通知チャンネル管理ページを開きます。

このページからSlackチャンネルを通知先として追加します。
プライベートチャンネルの場合、チャンネル設定からインテグレーションを開き「Google Cloud Monitoring」のアプリを追加する必要があります。

ログ抽出のためのクエリを構築する

Cloud Loggingのログエクスプローラを開きます。

まずは、通知したいログを抽出するためのクエリを作成します。
今回は、severityがERROR以上で、リソースがCloud Schedulerのログを抽出するクエリを作成しました。

ログエクスプローラ上での詳しいクエリの書き方はこちらを参照ください。

クエリ言語によって記述することもできます。

クエリからアラートを作成する

先程クエリを作成したページ内からアラートを作成できます。
ページ内に「ログアラートを作成する/Create log alert」が表示されている場合、それをクリックします。
表示されていない場合、「操作/Actions」から選択します。

指示に従って入力すれば、クエリと合致するログが現れた際にSlackに通知が行われます。
詳細は省略しますが、ここでクエリの指定と通知先の指定が行えます。
ログエクスプローラでクエリを構築していた場合はクエリが文字列で自動入力されています。
もちろん、自分でクエリを記述することも可能です。
例えば今回のクエリは以下のように記述できます。

severity>=ERROR
resource.type="cloud_scheduler_job"

通知先は今回作成したSlackの通知チャンネルとします。

エラーログを発生させる

Cloud Schedulerで存在しないURLに対してリクエストするジョブを作成しました。
これを実行することでクエリと合致するエラーを作成します。

Slackを確認

エラーを出したら通知が来ているかを確認します。
今回はすぐに通知を確認することができました。

まとめ

今回は、Cloud Loggingのログを抽出してSlackに通知する方法を紹介しました。
クエリを構築する必要がある点以外は簡単に行えると思います。
Pythonなどで通知する前にこちらの方法を検討してみてはいかがでしょうか。

Y.N
GRIでデータ分析やアルゴリズム開発、ForecastFlowの開発に携わっています。