AWS ECS Fargate,将日志发送到多个目标(CloudWatch日志和Elasticsearch)

6yt4nkrj  于 2022-12-11  发布在  ElasticSearch
关注(0)|答案(1)|浏览(213)

我在ECS Fargate中部署了一些容器,它们将日志发送到Cloudwatch日志。(不是亚马逊ElasticSearch服务)。我读过一些关于X1 E0 F1 X的信息,但我不清楚日志是否也会发送到CloudWatch日志。而且,所有的文档似乎都提到了亚马逊ElasticSearch服务,不是一个自己的Elasticsearch示例。你有什么建议/片段如何做到这一点?另外,如果我想发送日志到第三个,或第四个目的地,将是什么方法来做到这一点?当然,在最便宜的可能的方式,避免Firehose或Lambda技巧。

slsn1g29

slsn1g291#

添加一个回答,因为我没有信誉点来评论。无论如何,我建议你审查这个AWS Blog post的自定义firelens配置发送ecs fargate日志到多个目的地。
首先,您需要构建一个自定义的firelens映像,并将其提供给ECR:

FROM amazon/aws-for-fluent-bit:stable
ADD logDestinations.conf /logDestinations.conf

自定义映像应该有一个.conf文件,其中包含您的日志目标...下面是一个示例:

[OUTPUT]
    Name                cloudwatch
    Match               YourContainerName*
    region              us-east-1
    log_group_name      app-container
    log_stream_prefix   fluent-bit
    auto_create_group   true
[OUTPUT]
    Name              datadog
    Match             *
    Host              http-intake.logs.datadoghq.com
    TLS               on
    compress          gzip
    apikey            <DATADOG_API_KEY>
    dd_service        <APPLICATION_SERVICE>
    dd_source         <SOURCE>
    dd_message_key    log
    dd_tags           env:dev,<TAG_KEY>:<TAG_VALUE>

将Firelen作为新容器添加到TaskDefinition中:

ContainerDefinitions:
... [Other Containers in your task. E.g.: Your application, datadog agent, etc]
- Name: log-router
  Essential: true
  Image: amazon/customImage:latest
  Cpu: 100
  Memory: 256
  FirelensConfiguration:
    Type: fluentbit
    Options:
      enable-ecs-log-metadata: true
      config-file-type: file
      config-file-value: "/logDestinations.conf"

我测试了这个配置,它运行得很好。我唯一担心的是在一个单独的管道中设置我的映像,因为在Fargate上使用ECS时,不可能从S3获得logDestinations.conf文件。

参考:https://aws.amazon.com/pt/premiumsupport/knowledge-center/ecs-container-log-destinations-fargate/

相关问题