积分:
1.我们的应用程序在ECS中的Fargate上的端口5000上运行。
1.我们的应用程序在文件中的特定路径上创建日志。例如:/Server/logs/info.log
1.我们的动机是使用filebeat
作为sidecar容器,将日志发送到logstash
管道。
有谁能解释一下如何实现这一点吗?如果有人能指导我设置那将是非常有帮助的。
我们希望在同一个Task Definition
中使用filebeat
的sidecar容器。我们在同一个VPC中的EC2上拥有自托管的ElasticSearch
和Logstash
。
我试过用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: ~
1条答案
按热度按时间fae0ux8s1#
其中一种方法是使用
FireLens
,这是Amazon ECS和AWS Fargate的容器日志路由器。您可以使用Amazon ECS的FireLens
使用任务定义参数将日志路由到大量目标,在您的情况下包括Logstash
。FireLens
与Fluentd
和Fluent Bit
一起使用。阅读更多here这将作为
sidecar container
运行,您需要将另一个container
添加到任务定义的containerDefinitions
中。这还需要更新主应用程序容器中的logConfiguration
,以使用awsfirelens
作为logDriver
。示例配置:请参阅示例配置here、here和here(专门针对logstash)。
确保任务IAM角色Amazon资源名称(ARN)包含任务路由日志所需的权限。
希望能帮上忙。