Google Cloud Logging上の特定のログをメールで通知しよう

お久しぶりです。

最近、Google Cloudを使用する機会が多く、 このサービスはAWSでいうと〇〇やなと脳内変換しながら作業しています。

さて今回はGoogle Cloud Logging上に集計された特定のログをメールやSlackで通知する方法をご紹介したいと思います。

手順1 通知先を設定

まずは通知先を登録しましょう。

1.Cloud Console で、[Monitoring] に移動します

2.Monitoring のナビゲーション パネルで、notifications [アラート] をクリックします。

3.[Edit notification channels] をクリックします。

f:id:mister_yoda:20210829194833p:plain

4.チャネルの種類を見つけて [ADD NEW] をクリックし、情報を登録します。今回はEmailで通知しますので、Emailの[ADD NEW]をクリックします。

通知したいメールアドレスと表示名を入力し、[保存]をクリックします。 f:id:mister_yoda:20210829195134p:plain

手順2 フィルタリング用のクエリを作成

続いて、通知アラートを作成します。

1.Cloud Console で、[ロギング] に移動します

f:id:mister_yoda:20210829195616p:plain

2.フィルタリング用のクエリを作成します。

アラート設定の際に特定のログにフィルタリングするためのクエリ情報が必要となります。 上記のエクスプローラ上で事前にクエリを作成しておきましょう。 クエリ入力欄の上部に[リソース][ログ名][重大度]から絞り込むだけで、クエリが自動で作成されるので活用しましょう。 私の場合、Cloud functionsで出力されるエラーのうち、エラー以上のものを通知したかったため、 リソースをCloud functionsの作成した関数を追加し、重大度は[緊急][アラート][重大][エラー]にチェックつけ追加しました。 f:id:mister_yoda:20210829200203p:plain f:id:mister_yoda:20210829200718p:plain

作成されたクエリは以下の通りです。

resource.type="cloud_function" resource.labels.function_name="sample"
severity=(EMERGENCY OR ALERT OR CRITICAL OR ERROR)

このクエリを実行し、フィルタリングされたログ情報を表示しましょう。

手順3 アラートの作成

1.ログエクスプローラ画面の右真ん中付近の[操作]ボタンをクリック。ログアラートの作成をクリックします。

f:id:mister_yoda:20210829201215p:plain

2.アラート情報を入力します。

①Alert detailでアラート名とアラートの内容を入力し、[次へ]をクリックします。

f:id:mister_yoda:20210829201658p:plain

②Choose logs to include in the alertでは事前にクエリが実行されていればそのクエリ式が既に入力されているはずです。 そのまま[次へ]を押下しましょう。

f:id:mister_yoda:20210829202036p:plain

③Set time between notificationsでは通知の間隔を指定します。好きな間隔を指定し、[次へ]をクリックします。

f:id:mister_yoda:20210829202129p:plain

④Who should be notified? で手順1にて作成したチャネルを指定しましょう。指定後、[SAVE]をクリックします。

f:id:mister_yoda:20210829202405p:plain

これで設定は完了です。 実際にテストしてみましょう。

私の場合はCloud functionを設定したので、Cloud functionで意図的にアラートが発生させてみます。

エラー発生後、およそ30秒ほどでメールがきました! f:id:mister_yoda:20210829202848p:plain

最後に

今回はGoogle Cloud Logging上の特定のログをユーザに通知する方法を試してみました。 ログアラートの箇所にベータ版と記載してあったので、もしかしたら今後設定方法が変わるかもしれませんが、 同じような設定をしたい方ぜひとも試してみてください!