Log routing using AWS FireLens

この章のはじめに catsdef を作成する際、ecsInstanceRole ロールに CloudWatchLogsFullAccess ポリシーを添付し、FireLens の統合を有効にしました。

FireLens は Fluentd と Fluent Bit で動作します。AWS は、AWS for Fluent Bit イメージを提供していますが、独自の Fluentd または Fluent Bit イメージを使用することもできます。FireLens for Amazon ECS では、タスク定義パラメータを使用して、ログを AWS サービスまたは AWS Partner Network(APN)の宛先にルーティングし、ログの保存と分析を行うことができます。このラボでは、最もシンプルなユースケースの1つを学びます。Firelens Fluent Bit と CloudWatch Logs です。

1) CloudWatch Log groupsに移動します。 2) ecs-demogo-log をフィルタリングします。 FilterLogGroups 3) ecs-demogo-log をクリックし、各ログストリームを展開します。 LogStream 4) 各ログを展開して詳細情報を確認します。 DetailLogs container_id, ecs_cluster, etcs_task_definition, logs などの情報が確認できます。

  1. また、CloudWatch Log Insightsを使って簡単にログを分析することができます。ecs-demogo-log グループを選択し、View in Logs Insight ボタンをクリックすると、CloudWatch Logs Insight にリダイレクトされます。または、左のナビゲーションバーの Insight をクリックすることもできます。

  2. 以下のようなサンプルクエリが表示されるはずです。

    fields @timestamp, @message
    | sort @timestamp desc
    | limit 20
    
  3. fields:1つまたは複数の条件に基づいて、クエリの結果をフィルタリングします。

  4. sort:取得したログイベントをソートします。昇順(asc)と降順(desc)の両方に対応しています。

  5. limit:クエリで返されるログイベントの数を指定します。

CloudWatch Logs Insights は、ロググループに対するクエリの実行に使用できるクエリ言語をサポートしています。サンプルクエリを参照してください。

  1. Run queryをクリックすると、サンプルのクエリがどのような結果を出力するか確認できます。20件の結果がタイムスタンプの降順とログのメッセージの降順で表示され、シンプルに視覚化されています。キーとなるクエリ文は、右上の「Add to dashboard」ボタンをクリックすることで、ダッシュボードに追加することもできます。

Log Insightに加えて、Amazon CloudWatch Logsは他のAWSサービスと統合し、ユーザーにとって大きなメリットを提供します。例えば、CloudWatch Alarmでログの特定のフレーズをフィルタリングしてアラームを設定したり、AWS Kinesisを使ってログデータをリアルタイムに処理したりすることができます。

Amazon CloudWatch Logsは、ログの長期保存以外のユースケースでも利用されます。単純な長期保存の用途の場合、ログ自体はAmazon S3にエクスポートするなどして、CloudWatchを永久保存のために使用する必要がない限り、1日、1週間などの適切なExpire期間を設定するとよいでしょう。