Cloud Monitoring で特定ログの連発を検知してアラート通知する (後編)
投稿者:jyokoyama
はじめに
こんにちは!クラウドイノベーション部の横山です。
こちらのブログはタイトルの通り「Cloud Monitoring で特定ログの連発を検知してアラート通知する」の後編です。
前編の内容が気になる方はこちらからどうぞ。
前後編の内容は以下のとおりです。
目次
--- 前編 ---
1. Cloud Monitoring とは
2. 今回実装するもの
3. Cloud Logging の設定
- ログベースの指標を作成する
--- 後編 ---
4. Cloud Monitoring の設定
- 指標ベースのアラートポリシーを作成する
5. 動作確認
6. まとめ
それでは早速設定していきましょう。
4. Cloud Monitoring の設定
指標ベースのアラートポリシーを作成する
アラートポリシーとは、アラートのトリガー条件やアラートの動作(メール ? Slack? 誰に? など)を定義するものです。
また「指標ベースの」という枕詞が気になりますが、こちらは「ログベースの」と区別するためにつけています。「ログベースのアラートポリシー」についての説明は割愛しますが、今回は前回作成した「ログベースの指標」を使ってアラートポリシーを作るので「指標ベースの」ほうにあたるとご理解ください。
手順
1. Cloud コンソールから [Logging] – [Logs-based Metrics] を開きます。
2. [User-defined metrics] の先程作成した指標の三点リーダーをクリックし、[Create alert from metric] を選択します。
3. [Monitoring filter] が入力された状態の [Create alerting policy] 画面が表示されます。
4. その他の入力欄に以下のように入力します。
- Rolling window: Custom
- Custom Value: 4
- Custom Unit: minute(s)
- Rolling window function: sum
- Time series aggregation: none
- Add secondary data transformation: off
解説
ここまでの設定で「直近 4 分間のあやしいログ件数の合計を条件に利用する」ことが定義できました。
[Time series aggregation] 以下は [Rolling window] ~ [Rolling window function] で定義した集計結果を更に集計するような設定なのですが、今回は使用しないので無視的な設定にしています。
5. [NEXT] をクリックします。
6. 以下のように入力します。
- Condition type: Threshold
- Alert trigger: Any time series violates
- Threshold position: Above threshold
- Threshold value: 1
- Retest window: 1 min
- Condition name: あやしいログの連発
解説
ここまでの設定で「時系列がしきい値 1 を超えたらインシデントをオープンする」ことが定義できました。
時系列というのは、ここでは「直近 4 分間のあやしいログ件数の合計」のことだと思ってください。
インシデントをオープンするとは、「違反状態になった」みたいなイメージで良いかと思います。
[Retest window] について補足しておきます。
ここには再テストまでの間隔を設定します。再テストは誤検出を防ぐための仕組みです。
これを指定しない場合、アラートは違反を検知した瞬間に発出されます。しかし、例えば「1 分」と設定しておくと、最初に違反を検知した瞬間と、更にその 1 分後にも違反を検知しないと発出されないようになります。
今回は、以下のような「実際には連続していないあやしいログを 4 分間に 2 回分を検知してしまう」ケースを防ぐために使用しています。今回はあくまで連発を捕まえたいのです。
7. [NEXT] をクリックします。
8. [Use notification channel] を On にします。
9. [Notification channels] – [MANAGE NOTIFICATION CHANNELS] をクリックします。
新しいタブで [Notification channels] 画面が表示されます。
10. [Email] の [ADD NEW] をクリックします。
11. アラート通知の送信先としたい Email アドレスと表示名を入力して [SAVE] をクリックします。
12. [Edit alerting policy] 画面が表示されているタブに戻ります。
13. [Notification Channels] のリフレッシュボタンをクリックし、先程作成したアラート通知の送信先を選択し [OK] をクリックします。
14. 残りの項目は以下のように入力します。
- Text Field:
## あやしいログが連発しています。 あやしいのでご注意ください。
- Alert policy name: consecutive_doubtful_logs
解説
ここでは、アラート通知メールに記載する文面と、このアラートポリシーの名前を設定しました。
以上で設定は完了です。
動作確認
それでは、実際にあやしいログを出力して挙動を確認してみましょう。
自作のプログラム「LoggingTimer」を使って以下のスケジュールでログを出力してみます。
今回は ④ のタイミングでアラート通知メールが送信されれば成功です。
時刻 ログの内容
-=-=-=-=-=-=-=-=-=-=-=
18:20 「あやしい」 ... ①
18:22 「あやしくない」 ... ②
18:24 「あやしい」 ... ③
18:26 「あやしい」 ... ④
18:28 「あやしい」 ... ⑤
結果は以下の通りとなりました。
Cloud Logging には期待どおりにログが出力されています。
Cloud Monitoring でも期待通りのタイミングでインシデントがオープンしました。(ちょっとだけタイムラグがありはしますが…)
さらにアラート通知メールも届き、期待通りの動作が確認できました。
まとめ
今回は Cloud Monitoring を使って、特定ログの連発を検知しメール送信するという機能を実装しました。
この記事を通して少しでも Cloud Monitoring の理解を深めていただけたなら嬉しいです。
最後まで読んでいただきありがとうございました。
参考
指標に基づくアラートポリシーを作成する
フィルタリングと集計: 時系列の操作
ログベースの指標の概要
指標、時系列、リソース