将数据送入Elasticsearch和RabbitMQ的S3的最佳方法是什么?

问题描述

在我的公司中,我们开发了一些游戏,对于某些游戏,事件被发送给Elasticsearch,而其他事件则被发送给RabbitMQ。我们有一个本地CLI,该CLI可以从这两者中获取数据,将消息编译成压缩的(Gzip)JSON文件,然后另一个CLI将它们转换为sql语句,然后将它们扔到本地sql Server中。我们现在想扩大规模,但是当前的设置非常麻烦,而且无法实时分析。

我最近用Python构建了一个应用程序,打算将其发布到AWS的Docker容器中。该脚本从Elasticsearch获取数据,将其编译为小型压缩JSONS,然后发布到S3存储桶。从那里,数据被摄取到SNowflake中进行分析。到目前为止,我能够相当快地获取数据,并且有望作为替代方案。

我打算对RabbitMQ做类似的事情,但我想找到一个更好的替代方法,该方法可以使摄取过程无缝发生,并帮助我避免在python代码中实现各种异常调用

  1. 我进行了一些研究,发现可能存在将RabbitMQ链接到Amazon Kinesis Firehose的方法。我的问题是:如何将RabbitMQ的流发送到Kinesis?

  2. 对于Elasticsearch,实现此目标的最佳方法是什么?我已经阅读了有关S3的logstash插件https://www.elastic.co/guide/en/logstash/current/plugins-outputs-s3.html)和有关运动学的logstash插件https://www.elastic.co/guide/en/logstash/current/plugins-inputs-kinesis.html)的信息。哪种方法最适合实时摄取?

解决方法

我的回答非常有主题意义,需要在现实世界中进行测试并适应您的用例。 对于近乎实时的行为,我将使用logstash

您可以通过输出到RabbitMQ来创建更多可调用的archi,并使用其他管道来监听队列并执行其他任务。

  • 从logstash ES-> Rabbit MQ
  • 从logstash RabbitMQ-> SQL
  • 从logstash RabbitMQ-> Kinesis
  • 从logstash RabbitMQ-> AWS
  • 等...