この章のはじめに 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 をフィルタリングします。
3) ecs-demogo-log をクリックし、各ログストリームを展開します。
4) 各ログを展開して詳細情報を確認します。
container_id, ecs_cluster, etcs_task_definition, logs などの情報が確認できます。
また、CloudWatch Log Insightsを使って簡単にログを分析することができます。ecs-demogo-log グループを選択し、View in Logs Insight ボタンをクリックすると、CloudWatch Logs Insight にリダイレクトされます。または、左のナビゲーションバーの Insight をクリックすることもできます。
以下のようなサンプルクエリが表示されるはずです。
fields @timestamp, @message
| sort @timestamp desc
| limit 20
fields:1つまたは複数の条件に基づいて、クエリの結果をフィルタリングします。
sort:取得したログイベントをソートします。昇順(asc)と降順(desc)の両方に対応しています。
limit:クエリで返されるログイベントの数を指定します。
Log Insightに加えて、Amazon CloudWatch Logsは他のAWSサービスと統合し、ユーザーにとって大きなメリットを提供します。例えば、CloudWatch Alarmでログの特定のフレーズをフィルタリングしてアラームを設定したり、AWS Kinesisを使ってログデータをリアルタイムに処理したりすることができます。
Amazon CloudWatch Logsは、ログの長期保存以外のユースケースでも利用されます。単純な長期保存の用途の場合、ログ自体はAmazon S3にエクスポートするなどして、CloudWatchを永久保存のために使用する必要がない限り、1日、1週間などの適切なExpire期間を設定するとよいでしょう。