将日志从ECS Fargate发送到Elasticsearch的最佳方法

2ledvvac  于 2023-01-01  发布在  ElasticSearch
关注(0)|答案(1)|浏览(164)

我们有一个在AWS ECS Fargate中部署的运行NodeJS服务(节点:11-alpine docker图像)的多个容器的设置。
我们已经有一个正在运行的ElasticSearch示例从非Fargate应用程序中收集日志。我想将日志从Fargate容器传递到这个ElasticSearch示例中,但我很难找出最好的方法。
1)看起来有一种方法是从Cloudwatch--〉Lambda--〉ElasticSearch中流式传输日志。这看起来有点矫枉过正--难道没有其他方法可以做到这一点吗?
2)我希望我可以运行一个Logstash Docker示例,它可以从容器中收集日志,但我不确定在运行Fargate时是否可以这样做?
3)我应该在每个容器上安装类似FileBeat的东西,让它发送日志吗?
任何帮助都很感激。

sz81bmfz

sz81bmfz1#

1.看起来有一种方法是从Cloudwatch --〉Lambda --〉ElasticSearch中流式传输日志。这看起来有点矫枉过正--难道没有其他方法可以做到这一点吗?
如果你正在寻找一个基于AWS的托管解决方案,这是一种方法。你并不真的需要编写一个Lambda函数,AWS会为你做这件事。尽管如此,你必须承担Lambda和CloudWatch的成本。

AWS还推荐了另一种解决方案,即使用fluent-bit作为sidecar容器,将日志从服务内运行的其他容器直接导出到Elasticsearch/OpenSearch。使用此解决方案,您无需使用AWS CloudWatch,从而保存了成本。此解决方案还提供了更好的结果,避免了故障时日志丢失。

1.我希望我可以运行一个Logstash Docker示例,它可以从容器中收集日志,但我不确定在运行Fargate时是否可以这样做?
是的,如果您将该容器与另一个容器沿着运行,这是可能的。
1.我应该在每个容器上安装类似FileBeat的东西,让它发送日志吗?
您可以根据需要使用Fluent Bit、Filebeat、Fluentd、Functionbeat或Logstash。

**注意:**如果您正在考虑运行自己的日志导出器容器,如Logstash、Fluent Bit等,请不要启用CloudWatch日志记录以保存资金,因为您不会使用它。

相关问题