ハマログ

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

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日


関連記事

EC2のUbuntuにCloudWatchエージェントをインストール

環境 EC2 Ubuntu 18.04.5 LTS (GNU/Linux 5.4…

AWS S3のデータを取り出す

現在、社内で利用しているサーバのデータはAWSにバックアップしています。いざとい…

Amazon Linux 2に設置したBitnami Redmine StackにBasic認証を設定する

Redmineを利用するために、Amazon Linux2上に設置したBitna…


← 前の投稿

次の投稿 →