ヘルプ ログ管理 サポートしているログの種類 Amazon ECSログ
Amazon Elastic Container Service (ECS)はコンテナー管理サービスで、デプロイの自動化、管理、コンテナベースアプリケーションのスケーリングを行えます。
Amazon ECSログ管理の利点:
ECSではAmazon Elastic Compute Cloud (EC2)とAWS Fargateの2つのローンチタイプをサポートしています。
EC2を用いると、ECSクラスター内のEC2インスタンスで稼働しているコンテナーアプリケーションのインフラへのアクセスと制御を行えます。
Fargateの場合、サーバーレスにアプリケーションを管理し、AWSでインフラとコンテナを管理します。
Amazon ECSからアプリケーションログへログを転送するために、下記いずれかのローンチタイプを選択します。
ローンチタイプ | EC2 | Fargate |
Site24x7サーバー監視エージェントでのログ収集 | 有効 | 無効 |
Lambda関数を使用したCloudWatch経由でのログ収集 | 有効 | 有効 |
FireLensプラグインを使用したログ収集 | 有効 | 有効 |
設定方法は次のとおりです。
ログの種類を編集するには、[管理]→[アプリケーションログ]→[ログの種類]に移動し、特定のログの種類名をクリックしてください。
ログパターン
デフォルトで次のサンプルを基にAWS ECSログを解析します。
サンプルログ
{"log":"Starting image","stream":"stdout","time":"2019-06-04T11:29:54.295671087Z","container_name" : "/ecs-agent","container_hostname" : "3e9ceb8286e3", "containerid": "323e26da-67d4-4ae8-ad17-a30abcb9e007", "image" : "amazon/amazon-ecs-agent:latest", "image_id": "sha256:c3503596a2197b94b7b743544d72260374c8454453553d9da5359146b9e2af98","Labels": {"org.label-schema.build-date": "2022-11-16T20:43:16.419Z","org.label-schema.license": "Elastic License"},"cluster_name":"ECS"}
上記サンプルログは次の項目に分けられて、各値として表示されます。
項目名 | 項目値 |
log | Starting image |
stream | stdout |
time | 2019-06-04T11:29:54.295671087Z |
container_name | /ecs-agent |
container_hostname | 3e9ceb8286e3 |
containerid | 323e26da-67d4-4ae8-ad17-a30abcb9e007 |
cluster_name | ECS |
image | amazon/amazon-ecs-agent:latest |
image_id | sha256:c3503596a2197b94b7b743544d72260374c8454453553d9da5359146b9e2af98 |
Labels | Labels.key Labels.value org.label-schema.license Elastic License org.label-schema.build-date 2022-11-16T20:43:16.419Z |
2. これにより次のコンテナーのメタデータを抽出します。
container_name、container_hostname、cluster_name、image、image_id、Labels
awslogsログドライバーとLambda関数を使用して、CloudWatchログ経由でSite24x7にコンテナーログを転送します。
この設定には、タスク定義のアプリケーションコンテナー内のログドライバーを、awslogsに設定する必要があります。
awslogsログドライバーに設定するタスク定義は次のとおりです。
{
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "sample-application/container",
"awslogs-region": "us-east-2",
"awslogs-create-group": "true",
"awslogs-stream-prefix": "sample-application"
}
}
}
その後、次の手順でCloudWatch経由でのログ収集を設定します。
設定方法は次のとおりです。
FireLensでは、FluentBit HTTP outputプラグインを使用して、ECS Fargateからログを収集します。
次のコードをタスク定義に追加します。
{
"essential": true,
"image": "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:latest",
"name": "log_router",
"firelensConfiguration": {
"type": "fluentbit"
}
}
同じFargateタスクで、コンテナーログ設定を定義しログを送信します。
この設定ではawsfirelensをログドライバーにし、Fluent Bitにデータを送信する必要があります。
アプリケーションは様々なパターンでログを書き込むため、サンプルログ行を基にログパターンをカスタマイズします。
例として、サービスがログ項目にカスタマイズしたメッセージを書き込む場合、date、log level、log level ID、thread、class name、messageといった項目が次のサンプルログのように書き込まれます。
サンプルログ
{
"date": 1684129842.901607,
"log": "2023-05-16 13:00:16.109 ERROR 1 --- [zylker-thread] zylker.classname : zylkermethod",
"container_id": "e961d005829f458dasd32342377ffec-1159264102",
"container_name": "sample-fargate-app",
"source": "stderr",
"ecs_cluster": "Applog_ECS_CLUSTER",
"ecs_task_arn": "arn:aws:ecs:us-east-2:12736187623:task/Applog_ECS_CLUSTER/e961d005829f458dasd32342377ffec",
"ecs_task_definition": "fargate-task-definition:1"
}
この場合、次のようにログパターンをカスタマイズし、個々の項目を抽出します。詳細はこちらのページをご確認ください。
上記サンプルログを基にしてカスタマイズしたログパターン
ログをアプリケーションログにプッシュされるようになると、保存検索とアラート機能を使用してログを監視できます。
例えば、エラーでフィルターしたログを検索するため、次のクエリを保存します。
logtype="AWS ECS Logs" and loglevel CONTAINS "ERROR"