创建使用 FireLens 配置的任务定义 - Amazon Elastic Container Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建使用 FireLens 配置的任务定义

要将自定义日志路由与 结合使用FireLens,您必须在任务定义中指定以下内容:

  • 包含 FireLens 配置的日志路由器容器。我们建议将容器标记为 essential

  • 一个或多个包含指定 awsfirelens 日志驱动程序的日志配置的应用程序容器。

  • 一个任务 IAM 角色 ARN,其中包含任务路由日志所需的权限。

使用 创建新的任务定义时AWS 管理控制台,有一个FireLens集成部分,可让您轻松添加日志路由器容器。有关更多信息,请参阅创建任务定义.

Amazon ECS 将转换日志配置并生成 Fluentd 或 Fluent Bit 输出配置。输出配置装载在 /fluent-bit/etc/fluent-bit.conf(对于 Fluent Bit)和 /fluentd/etc/fluent.conf(对于 Fluentd)处的日志路由容器中。

下面的任务定义示例定义了一个日志路由器容器,它使用 Fluent Bit 将日志路由到 CloudWatch Logs. 该示例还定义了一个应用程序容器,它使用日志配置将日志路由到 Amazon Kinesis Data Firehose.

{ "family": "firelens-example-firehose", "taskRoleArn": "arn:aws:iam::123456789012:role/ecs_task_iam_role", "containerDefinitions": [ { "essential": true, "image": "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:latest", "name": "log_router", "firelensConfiguration": { "type": "fluentbit" }, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "firelens-container", "awslogs-region": "us-west-2", "awslogs-create-group": "true", "awslogs-stream-prefix": "firelens" } }, "memoryReservation": 50 }, { "essential": true, "image": "httpd", "name": "app", "logConfiguration": { "logDriver":"awsfirelens", "options": { "Name": "firehose", "region": "us-west-2", "delivery_stream": "my-stream" } }, "memoryReservation": 100 } ] }

logConfiguration 对象中指定为选项的键值对用于生成 Fluentd 或 Fluent Bit 输出配置。以下是来自 Fluent Bit 输出定义的代码示例。

[OUTPUT] Name firehose Match app-firelens* region us-west-2 delivery_stream my-stream
注意

FireLens 管理match配置。您的任务定义中未指定此配置。

使用Amazon ECS元数据

在任务定义中指定FireLens配置时,您可以选择切换 的值enable-ecs-log-metadata。 默认情况下, 在日志条目中Amazon ECS添加其他字段,以帮助标识日志的来源。可以通过将 enable-ecs-log-metadata 设置为 false. 来禁用此操作。

  • ecs_cluster – 任务所属的集群的名称。

  • ecs_task_arn – 容器所属的任务的完整 ARN。

  • ecs_task_definition – 任务正在使用的任务定义名称和修订。

  • ec2_instance_id – 容器托管于的 Amazon EC2 实例 ID。此字段仅对使用 EC2 启动类型的任务有效。

下面显示了在指定 Amazon ECS 日志元数据设置值时所需的语法:

{ "containerDefinitions":[ { "essential":true, "image":"906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:latest", "name":"log_router", "firelensConfiguration":{ "type":"fluentbit", "options":{ "enable-ecs-log-metadata":"true | false" } } } ] }

指定自定义配置文件

除了 代表您FireLens创建的自动生成的配置文件之外,您还可以指定自定义配置文件。配置文件格式是您所使用的日志路由器的本机格式。有关更多信息,请参阅 Fluentd Config 文件语法Fluent Bit 配置架构.

在自定义配置文件中,对于使用 bridgeawsvpc 网络模式的任务,不应通过 TCP 设置 Fluentd 或 Fluent Bit 转发输入,因为 FireLens 会将其添加到输入配置中。

您的FireLens配置必须包含以下选项才能指定自定义配置文件:

config-file-type

自定义配置文件的源位置。可用选项为 s3file.

注意

上托管的任务AWS Fargate仅支持 file 配置文件类型。

config-file-value

自定义配置文件的源。如果使用 s3 配置文件类型,则配置文件值是 Amazon S3 存储桶和文件的完整 ARN。如果使用 file 配置文件类型,则配置文件值是容器映像中或装载到容器中的卷上存在的配置文件的完整路径。

重要

使用自定义配置文件时,您必须指定与 FireLens 使用的路径不同的路径。 为 Fluent Bit 和 Amazon ECS Fluentd /fluent-bit/etc/fluent-bit.conf 保留/fluentd/etc/fluent.conf文件路径。

以下示例显示了指定自定义配置时所需的语法。

重要

要指定托管于 Amazon S3 中的自定义配置文件,请确保已创建具有适当权限的任务执行 IAM 角色。有关更多信息,请参阅所需的 IAM 权限.

下面显示了在指定自定义配置时所需的语法:

{ "containerDefinitions":[ { "essential":true, "image":"906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:latest", "name":"log_router", "firelensConfiguration":{ "type":"fluentbit", "options":{ "config-file-type":"s3 | file", "config-file-value":"arn:aws:s3:::mybucket/fluent.conf | filepath" } } } ] }
注意

上托管的任务AWS Fargate仅支持 file 配置文件类型。