ハマログ

株式会社イーツー・インフォの社員ブログ

AWS CloudWatch LogsをLambdaにストリーミングするときのサブスクリプションフィルタパターンの書き方

はじめに
AWS上で動いているアプリケーション監視の際に、CloudWatch Logsだけの機能を利用してログのモニタリングを行う場合、logs2snsを利用して、ログ文字列の監視をおこなっています。

この設定の中で、CloudWatchログからLambdaにストリーミングするためのフィルターを書く必要があるのですが、OR条件の書き方がわからず、すべてのログを送信していた時期がありました(お金の無駄遣い!)

反省の意味も含めて、備忘録としてまとめておきます。ちなみに、JSONログイベントについては今回は記載しません。また、ログの形式が「その他」の場合について記載します。
サブスクリプションフィルタのパターンとは
ここのことです
パターン
公式ドキュメントはこちらです。
フィルターとパターンの構文
[ERROR] A fatal exception has occurred
Exiting with ERRORCODE: -1
という文字列(公式ドキュメントから流用)があった場合。
部分一致
フィルタパターン
ERROR
以下のように両方の行にマッチします。
[ERROR] A fatal exception has occurred
Exiting with ERRORCODE: -1
AND条件
フィルタパターン
ERROR fatal
半角スペースで複数の文字列を記載します。すべての文字列が含まれる以下の行にマッチします。
[ERROR] A fatal exception has occurred
OR条件

フィルタパターン

?fatal ?ERRORCODE

文字列の前に?をつけて、複数の文字列を記載します。いずれかの文字列が含まれる行にマッチします。

[ERROR] A fatal exception has occurred
Exiting with ERRORCODE: -1
文字列Aが含まれていて、Bが含まれていない
フィルタパターン
ERROR -CODE
部分一致の文字列と、ハイフン(-)を先頭に付けた除外文字列を指定します。ERRORが含まれていてCODEが含まれていない以下の文字列がマッチします。
[ERROR] A fatal exception has occurred
もうちょっと複雑な指定もできそうですが、今回はここまでで十分だったのでここまで。また必要になったときに続きます。
AWSlambdaサブスクリプションパターン

  kaneko tomo   2019年4月26日


関連記事

CodeBuildでError: ENOSPC: System limit for number of file watchers reachedにハマった

厳密にはこのエラーを解決するために必要な、fs.inotify.max_user…

『ドキュメントルートの変更が反映されない』にハマって酷い目に遭った話。

『検証環境のドキュメントルートのディレクトリ名がちょっとアカンから本番と合わせて…

AWS環境でメンテナンス画面表示したいんだけど

こんにちは池島です。少しつまずいたことがあったので備忘録的にメモ。 要望はAWS…


← 前の投稿

次の投稿 →