yamasaki0技術5課の山﨑です。今月から大阪で勤務になりました。地元は落ち着きますね。Logsでメトリクスフィルターを作成し、アラームでメール通知させてみたという記事の中でCloudWatchのメトリクスフィルターのフィルターパターンの書き方についてあまり触れていなかったので、自分の頭を整理するという意味でさくっとまとめてみました。詳細はドキュメントをご覧ください。Logsのメトリクスフィルターでは指定された一致する語句や値をログイベントの中で検索できます。例えると正規表現を使った文字列のマッチングのようなイメージです。フィルターをかけるログには2つの形式があります。1つはJSON形式のログ、もう1つはスペース区切りのログです。以降、それぞれのログ形式に分けてフィルターパターンの書き方を整理します。JSON形式のログJSON形式のログは下記のようなログです(AWSのドキュメントに筆者加筆)。true}メトリクスフィルターではマッチさせたい文字列の表現方法は大きく分けて3つあります。“UpdateTrail”」のログを抽出したい場合は下記のようなフィルターパターンで表現します。このフィルターにおいて特殊文字としての役割を果たしているので「\(バックスラッシュ)」で文字をエスケープする必要があります。“UpdateTrail”」を含むログを抽出したい場合は下記のようなフィルターパターンで表現します。}含む、ではなく除外したい場合は下記のように表現します。}配列の中にある値を参照したい場合は下記のように表現します。}nullに設定されている「SomeObject」を抽出したい場合は下記のように表現します。}OR(||)とAND(&&)を使って複数条件を組み合わせることも可能です。“yamasaki”を抽出したい場合は下記のように表現します。※入れ子構造の場合は、「.(ドット)」で変数を繋げます。}“employee:ID”:”12345′′を抽出したい場合は下記のように表現します。"\"employee:ID\":\"12345\""1"\"employee:ID\":\"12345\""あれ?これはログイベントの語句の一致(文字列一致)のパターンですね。実は今回はJSON形式では表現できません。JSON形式のログのフィルターパターンは英数字の文字列とハイフン(-)とアンダーバー(_)のみがサポートされているので、「:(コロン)」をプロパティに指定することはできません。よってJSON形式ではなく、ログイベントの語句の一致(文字列一致)のパターンで表現する必要があります。ログ中の意図した位置以外にも一致する文字列が存在する場合は合わせて抽出されてしまうので注意する必要があります。スペース区切りのログAWSのドキュメントそのままですが、スペース区切りのログは下記のようなログです。4355スペース区切りのログイベントから値を取得まず、スペース区切りで表現されている値のフィールドが何かを把握しておきます。順番にフィールドの値がログとして出力されています。4355「status_codeが200」のログを抽出したい場合は下記のように表現します。bytes]「status_codeが200」且つ「4355bytes以上」のログを抽出したい場合は下記のように表現します。エンジニアブログ.TOP。