【ゴール】
ログに"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)
名前と説明を追加
アラーム名:[testApp]hogehoge_error
アラームの説明:
testApp_hogehogeで"ERROR"を含むログが出力されました。
詳細はCloudwatchLogsのロググループ:****.log をご確認ください。
4)テスト
再度テストログを出力
→メールが届けばOK