こんばんは、小寺です。
CloudWatch Logsのフィルターパターンで正規表現が使えるようになりました。
アップデート内容
フィルター パターン内で正規表現が使えるようになりました。フィルターパターンでより抽出したいログのカスタマイズができます。
複数のフィルタを定義する必要がなくなり、ログ管理がより便利になっています。
サポートされている正規表現は、以下の通りです。
・英数字: 英数字は、アルファベット (A ~ Z または a ~ z) または数字 (0 ~ 9) のいずれかの文字です。
・サポートされている記号文字 :「_」、「#」、「=」、「@」、「/」、「;」、「,」、および「-」が含まれます。たとえば、%something!% は '!' のため利用不可です。
・サポートされている演算子 '^'、'$'、'?'、'['、']'、'{'、'}'、'|'、'\'、'*'、'+'
・サポートされていない演算子:'('、 ')'
フィルターパターンとして、「apple.com」で定義をしてみます。
パターンをテストしてみると、無事に一致が確認できました。
ちょっと便利になったこと
CloudWatch Logsは、普通は「●●というログが出力されたら、○○に通知を送る」ログ監視として利用されることが多いかと思います。
アップデート前までは、フィルターパターン構文を使って、ログを検索し、メトリック フィルターを使用してメトリックを抽出し、サブスクリプション フィルターを使用して特定のログを他の宛先に転送する流れでした。
・メトリクスフィルター
CloudWatch Logs で受信するログデータを検索およびフィルタリングします。
ログデータを数値の CloudWatch メトリクスに変換し、グラフを作成したり、アラームを設定できます。
・サブスクリプションフィルター
CloudWatch Logsからのログイベントにアクセスを行い、カスタム処理、分析、他のシステムへのロードを行うために、Amazon Kinesis ストリーム、Amazon Kinesis Data Firehose ストリーム、AWS Lambda などの他のサービスにログを送ることができます。
これまでは、フィルターパターンを使うときの制約として、以下がありました。
Q: 正規表現をログデータに使用できますか?
https://aws.amazon.com/jp/cloudwatch/faqs/
Amazon CloudWatch のメトリクスフィルタでは、正規表現はサポートされていません。正規表現を使ってログデータを処理するには、Amazon Kinesis を使用してストリームと正規表現処理エンジンを接続することを検討してください。
今回、正規表現がサポートされたことにより、「{ $.statusCode=%4[0-9]{2}% }」などの正規表現を使用して、複数のIPサブネットまたは HTTP ステータス コードに一致する1つのフィルタを作るだけでログ管理ができるようになりました。