Technical Blog テクニカルブログ
  1. HOME
  2. テクニカルブログ
  3. Cloud Monitoring で特定ログの連発を検知してアラート通知する (後編)

Cloud Monitoring で特定ログの連発を検知してアラート通知する (後編)

投稿者:jyokoyama

Cloud Monitoring で特定ログの連発を検知してアラート通知する (後編)

はじめに

こんにちは!クラウドイノベーション部の横山です。
こちらのブログはタイトルの通り「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 回分を検知してしまう」ケースを防ぐために使用しています。今回はあくまで連発を捕まえたいのです。

failure_pattern.jpg

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 には期待どおりにログが出力されています。

logging.jpg

Cloud Monitoring でも期待通りのタイミングでインシデントがオープンしました。(ちょっとだけタイムラグがありはしますが…)

alerting1.jpg

alerting2.jpg

さらにアラート通知メールも届き、期待通りの動作が確認できました。

email.jpg

まとめ

今回は Cloud Monitoring を使って、特定ログの連発を検知しメール送信するという機能を実装しました。
この記事を通して少しでも Cloud Monitoring の理解を深めていただけたなら嬉しいです。
最後まで読んでいただきありがとうございました。

参考

指標に基づくアラートポリシーを作成する
フィルタリングと集計: 時系列の操作
ログベースの指標の概要
指標、時系列、リソース

ページのトップへ