logstash 我们如何将应用程序日志从Fargate [ECS]发送到我们的自托管ElasticSearch?

cnwbcb6i  于 2023-04-27  发布在  Logstash
关注(0)|答案(1)|浏览(222)

积分:
1.我们的应用程序在ECS中的Fargate上的端口5000上运行。
1.我们的应用程序在文件中的特定路径上创建日志。例如:/Server/logs/info.log
1.我们的动机是使用filebeat作为sidecar容器,将日志发送到logstash管道。
有谁能解释一下如何实现这一点吗?如果有人能指导我设置那将是非常有帮助的。
我们希望在同一个Task Definition中使用filebeat的sidecar容器。我们在同一个VPC中的EC2上拥有自托管的ElasticSearchLogstash
我试过用filebeat配置文件创建一个filebeat镜像,它正在运行,但不发送日志。

filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false

      #filebeat.autodiscover:
      #  providers:
      #    - type: docker
      #      hints.enabled: true
      #      hints.default_config:
      #        type: container
      #        paths:
      #          - /var/log/containers/*-${data.container.id}.log

autodiscover.providers:
  - type: docker
    templates:
      - condition.contains:
          docker.container.image: node-app
        config:
          - type: log
            paths:
              - "/mnt/logs/*.log"

output.logstash:
  hosts: ["ip:5044"]

processors:
- add_cloud_metadata: ~
fae0ux8s

fae0ux8s1#

其中一种方法是使用FireLens,这是Amazon ECS和AWS Fargate的容器日志路由器。您可以使用Amazon ECS的FireLens使用任务定义参数将日志路由到大量目标,在您的情况下包括LogstashFireLensFluentdFluent Bit一起使用。阅读更多here
这将作为sidecar container运行,您需要将另一个container添加到任务定义的containerDefinitions中。这还需要更新主应用程序容器中的logConfiguration,以使用awsfirelens作为logDriver。示例配置:

"containerDefinitions":[
    {
        "essential":true,
        "image":"906394416424.dkr.ecr.us-east-1.amazonaws.com/aws-for-fluent-bit:stable",
        "name":"log_router",
        "firelensConfiguration":{
            "type":"fluentbit"
        },
    },
    {
        "logConfiguration": {
            "logDriver":"awsfirelens",
            "options": {
                "Name":"http",
                "Host":"api.logstash.fake.domain",
                "Port":"8090",
                "Format":"json",
                "Retry_Limit": "2"
            }
         ...
    }
]

请参阅示例配置hereherehere(专门针对logstash)。
确保任务IAM角色Amazon资源名称(ARN)包含任务路由日志所需的权限。
希望能帮上忙。

相关问题