zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

【CloudWatchLogs】特定の文字列が出たらアラートメールするメモ

【ゴール】

ログに"ERROR"という文字列が出たらSNS経由でメールが飛ぶようにします

【やったこと】

1)ロググループにメトリクスフィルターを追加する


ロググループを選択-[アクション]-[メトリクスフィルターを作成]

フィルターパターン:"ERROR"
メトリクスの割り当て
フィルター名:hogehoge_filter
メトリクス名:hogehoge_error
メトリクス名前空間:hogehogeApp
メトリクス値:1
デフォルト値:0
Unit:-

2)メトリクスフィルターによる値を記録するためにテストログを出す

https://dev.classmethod.jp/articles/metrics-filter-missing/CloudWatch Logs メトリクスフィルターは 継続的にデフォルト値をメトリクスに発行しているわけではない | DevelopersIO
によれば
「メトリクスフィルターがメトリクスに値を発行するのは、フィルターパターンに一致するにせよしないにせよ、ログイベントが発生した場合のみ」らしいので手動でテストログを追記する

[2022-xx-xx xx:xx:00] hoge.ERROR: this is test log. please igonre me.

→メトリクスにカスタム名前空間として先ほど作成した
> メトリクス名前空間:hogehogeApp
が出ているはずなので、その中のメトリクス「hogehoge_error」が出ていることを確認する

3)アラームの作成

SNSトピック「test-user」(スタンダード、サブスクリプションのエンドポイントが対象のメールアドレス)は既に存在している前提
[アラーム]-[アラームの作成]

メトリクスと条件の指定

メトリクス:2)で確認したメトリクスを選択
しきい値の種類:静的
アラーム条件 0より大きい
(5 分内の1データポイントのhogehoge_error > 0)

アクションの設定

通知:通知の送信先に作成済みのSNSトピック「test-user」を指定

名前と説明を追加

アラーム名:[testApp]hogehoge_error
アラームの説明:
testApp_hogehogeで"ERROR"を含むログが出力されました。
詳細はCloudwatchLogsのロググループ:****.log をご確認ください。

4)テスト

再度テストログを出力
→メールが届けばOK