CloudWatchLogsのメトリクスフィルターの使い方ーログデータをメトリクス化して監視する

本記事では、CloudWatchのメトリクスフィルターを使用して、CloudWatchLogsのログデータをメトリクス化し、メトリクスを監視してアラートをあげることをやっていきます。

本記事でやること

CloudWatchLogsのログデータをメトリクスフィルターを使用して、メトリクス化する
メトリクスを監視してアラートをあげる

    まずは、メトリクスフィルターでログデータをメトリクス化します!

    スポンサーリンク

    メトリクスフィルターでログデータをメトリクス化する

    ログデータをメトリクス化していきます。

    例:特定の文字をカウントしてメトリクス化する

    CloudWatchLogsのログデータ内の文字をカウントして、メトリクス化するということをやっていきます。

    まずはメトリクスフィルターを作成します。

    メトリクスフィルターの作成

    ログの中から「Error」という文字を検出する方法を記載します。

    1. AWSマネージメントコンソール画面からCloudWatchダッシュボードを表示
    2. ロググループリンクを押下する
    3. メトリクスフィルタータブを開く
    4. 「メトリクスフィルターを作成」ボタンを押下
    メモリクスフィルターを作成

    メモリクスフィルターを作成

    以下の画面が表示されるので、「フィルターパターン」を入力します。

    メトリクス化したいログを検索するイメージです。

    今回は「Error」という文字を検出したいので、フィルターパターンに「Error」と入力します。

    フィルターパターンを入力後、「パターンをテスト」ボタンを押下すると、フィルターパターンでログ検索した結果、どのようなデータがヒットするかをテストできます。

    フィルターパターンは大文字・小文字を区別するので要注意です。

    メトリクスフィルターのパターン定義

    メトリクスフィルターのパターン定義

    フィルタパターンを設定して、Nextボタンを押下するとメトリクスの割り当て画面が表示されます。以下の設定をしてNextボタンを押下します。

    • フィルター名:適切なもの
    • メトリクス空間:CloudWatchのメトリクスの名前空間を指定します。メトリクスフィルターであることが分かりやすいものを入力すると良いです
    • メトリクス名:どのようなメトリクスなのか分かりやすい名前をつけると良いです。
    • メトリクス値:「1」を指定します
    メトリクスフィルター メトリクスの割り当て

    メトリクスフィルター メトリクスの割り当て

    Review and confirm画面が表示されるので、「メトリクスフィルターを作成」ボタンを押下します。

    これでメトリクス化ができたので、メトリクスを確認していきます。

    メトリクスの確認

    1. AWSマネージメントコンソール画面からCloudWatchダッシュボードを表示
    2. すべてのメトリクスを押下する
    3. メトリクスフィルター作成時に指定した「メトリクス空間」の名前で、名前空間が追加されているので、追加された名前空間を選択します
    4. 「ディメンションなしのメトリクス」を選択します
    5. メトリクスフィルター作成時に指定した「メトリクス名」が表示されるので、その「メトリクス名」を選択します
    6. 以下のようなグラフが表示されます。
    7. 今回「Error」という文字のカウントが目的でした。統計で合計を選択すると「Error」という文字をカウントしたグラフとなります。
    メトリクスフィルターグラフ

    メトリクスフィルターグラフ

    次は、ログデータがJSONデータの場合のメトリクス化について書いていきます!

    例:JSON形式のログのメトリクス化

    概ね特定の文字をカウントする例と同様となります。

    異なる点は2点です。

    まず、「フィルターパターン」の入力の部分が異なります。

    JSONの場合、以下のように記載できます。

    { $.{JSONキー} = "{JSONバリュー}" }
    

    以下のようなJSONの例で見ていきます。

    {"tx_bytes":0}

    「フィルターパターン」には、以下のような記載をします。

    { $.tx_bytes = 0 }
    

    他にも、以下のように不等号で指定することも可能です。

    { $.tx_bytes < 1 }

    また、メトリクスの割り当て画面のメトリクス値で、JSONの値を指定できる点も異なります。

    $.{JSONキー} 
    

    上記のように指定します。具体的には以下のようになります。

    $.tx_bytes

    メトリクス化ができたので、次は、メトリクスの監視をしていきます。

    メトリクスを監視する

    通常のメトリクスの監視と同様です。

    1. CloudWatch→アラーム→アラームの作成とメニューを進める
    2. 作成したメトリクスを指定してアラームを作成します。
      • 通常のアラーム作成と同様の方法で作成可能です。

    まとめ

    メトリクスフィルターを使用して、CloudWatchLogsのログデータを

    • CloudWatchのメトリクスで見える化する
    • メトリクスを監視してアラートをあげる

    ということをやってきました。

    システム設計段階で、メトリクスフィルターを使用することがわかっていれば、ログ出力をメトリクスフィルターしやすい形に設計しておくことをオススメします。

    ↓公式記事です↓

    メトリクスフィルターの作成 - Amazon CloudWatch Logs
    CloudWatch Logs を使用してログデータを検索する例に基づいてメトリクスフィルターを作成します。