お久しぶりです。
最近、Google Cloudを使用する機会が多く、 このサービスはAWSでいうと〇〇やなと脳内変換しながら作業しています。
さて今回はGoogle Cloud Logging上に集計された特定のログをメールやSlackで通知する方法をご紹介したいと思います。
手順1 通知先を設定
まずは通知先を登録しましょう。
1.Cloud Console で、[Monitoring] に移動します
2.Monitoring のナビゲーション パネルで、notifications [アラート] をクリックします。
3.[Edit notification channels] をクリックします。
4.チャネルの種類を見つけて [ADD NEW] をクリックし、情報を登録します。今回はEmailで通知しますので、Emailの[ADD NEW]をクリックします。
通知したいメールアドレスと表示名を入力し、[保存]をクリックします。
手順2 フィルタリング用のクエリを作成
続いて、通知アラートを作成します。
1.Cloud Console で、[ロギング] に移動します
2.フィルタリング用のクエリを作成します。
アラート設定の際に特定のログにフィルタリングするためのクエリ情報が必要となります。 上記のエクスプローラ上で事前にクエリを作成しておきましょう。 クエリ入力欄の上部に[リソース][ログ名][重大度]から絞り込むだけで、クエリが自動で作成されるので活用しましょう。 私の場合、Cloud functionsで出力されるエラーのうち、エラー以上のものを通知したかったため、 リソースをCloud functionsの作成した関数を追加し、重大度は[緊急][アラート][重大][エラー]にチェックつけ追加しました。
作成されたクエリは以下の通りです。
resource.type="cloud_function" resource.labels.function_name="sample" severity=(EMERGENCY OR ALERT OR CRITICAL OR ERROR)
このクエリを実行し、フィルタリングされたログ情報を表示しましょう。
手順3 アラートの作成
1.ログエクスプローラ画面の右真ん中付近の[操作]ボタンをクリック。ログアラートの作成をクリックします。
2.アラート情報を入力します。
①Alert detailでアラート名とアラートの内容を入力し、[次へ]をクリックします。
②Choose logs to include in the alertでは事前にクエリが実行されていればそのクエリ式が既に入力されているはずです。 そのまま[次へ]を押下しましょう。
③Set time between notificationsでは通知の間隔を指定します。好きな間隔を指定し、[次へ]をクリックします。
④Who should be notified? で手順1にて作成したチャネルを指定しましょう。指定後、[SAVE]をクリックします。
これで設定は完了です。 実際にテストしてみましょう。
私の場合はCloud functionを設定したので、Cloud functionで意図的にアラートが発生させてみます。
エラー発生後、およそ30秒ほどでメールがきました!
最後に
今回はGoogle Cloud Logging上の特定のログをユーザに通知する方法を試してみました。 ログアラートの箇所にベータ版と記載してあったので、もしかしたら今後設定方法が変わるかもしれませんが、 同じような設定をしたい方ぜひとも試してみてください!