CloudWatch Logs のメトリクスフィルターの設定方法を整理してみた

2020.07.20

コンサル部@大阪オフィスのYui(@MayForBlue)です。

CloudWatch Logs のメトリクスフィルター、便利ですが最初はなーんかとっつきにくいなあという気持ちになったので作成方法や概念などをまとめてみました。

メトリクスフィルターとは

ログデータから特定の文字列のフィルタリングをする機能です。
CloudWatch Logs に取り込まれたログデータの中から、監視対象のデータを抽出してメトリクスとして数値化、可視化できます。 さらにそこからアラームを作成したり、SNSを経由してメールなどに通知することができます。

CloudWatch Logs のデータはロググループの中にさらにログストリームというグループの単位があり、その中にログイベント(一つのログのレコード)が保存されます。

メトリクスフィルターはロググループに割り当てられ、そのロググループの中のログストリームのデータ全てに適用されます。

Amazon CloudWatch Logs の概念

メトリクスフィルターの要素

フィルターパターン

フィルターパターンを設定すると、ログデータの中からフィルターパターンに合致するログが抽出され、対象のログのみがカウントされます。 フィルターパターンを空欄にすると全ログが対象となります。

メトリクス名

対象のログをどういった名前でメトリクスとして発行するかの設定です。

メトリクス名前空間

CloudWatch メトリクスを送信する名前空間です。 名前空間を設定するとその階層の下にメトリクスが送信されます。

下図のようにメトリクスのダッシュボードにはまず名前空間の単位があり、その中にメトリクスが送信されます。

メトリクス値

一致するログが見つかるたびにメトリクスに発行する数値です。 たとえば、「Error」など特定の語句の発生回数をカウントする場合、その値が発生すると「1」がカウントされます。

デフォルト値

一致するログが見つからなかった期間中にメトリクスフィルターに設定する値です。

フィルターを使用したログイベントからのメトリクスの作成

メトリクスフィルターの設定方法

作成

まずは作成からです。
CloudWatch のダッシュボードからロググループをクリックし、対象のロググループを選択します。
ロググループの詳細画面のメトリクスフィルターのタブから「メトリクスフィルターを作成」をクリックします。

フィルターパターンを入力し、「Next」をクリックします。

以下を入力し、「Next」をクリックします。

  • フィルター名
  • メトリクス名前空間
  • メトリクス名
  • メトリクス値
  • デフォルト値

内容を確認して問題なければ「メトリクスフィルターを作成」をクリックし、作成が完了します。

修正

次は、作成済みのメトリクスフィルターの修正・編集方法です。
メトリクスフィルターのタブから対象のメトリクスフィルターを選択(チェックボックスにチェックを入れる)し、「編集」をクリックします。

編集できる項目は新規作成時と同じなので、必要な項目を設定して内容を保存します。

追加

メトリクスフィルターは一つのロググループに対して複数設定することができます。
新規作成時と同様、「メトリクスフィルターを作成」をクリックして内容を保存することで、メトリクスフィルターが追加されます。

作成後、一覧からメトリクスフィルターが追加されていることが確認できます。

フィルターパターンの書き方

フィルターパターンには複数語句を設定する方法やORパターンマッチングを使用する方法、JSONログイベントから値を取得する方法などがあります。
こちらについては公式ドキュメントに詳細にまとめられているので、以下リンクをご参照ください。
フィルターとパターンの構文

実際に動きを確認してみる

今回はメトリクスフィルターのフィルターパターンを空欄のまま設定したので、全てのログがヒットするはずです。
対象のロググループ内のログストリームにログイベントを送信して、メトリクスが表示されることを確認してみます。

ロググループ配下のログストリームを選択します。

「アクション」より「Create Log Event」をクリックして、テスト用のログイベントを作成します。

ログメッセージを入力して「作成」をクリックします。

ログメッセージが作成されていることが確認できます。

CloudWatch のメトリクスに値が上がっていることを確認します。
メトリクスに値が上がると対象の名前空間が選択できるようになるので、クリックします。

「ディメンションなしのメトリクス」をクリックします。

対象のメトリクスにチェックを入れると、値が「1」で上がっていることが確認できました!

さいごに

CloudWatch Logs を活用する上でメトリクスフィルターの概念を知るのは必須になると思います。

なお、メトリクスフィルターを使ってアラームを作成したりメール通知する方法については以下のブログでチュートリアル形式でご紹介しています。
気になった方はこちらも読んでみてください。

以上、コンサル部@大阪オフィスのYui(@MayForBlue)でしたっ(`・ω・´)