查询/过滤kinesis流中的事件

时间:2017-03-05 03:03:49

标签: amazon-web-services event-sourcing amazon-kinesis

我正在为我的架构开发Kinesis-streams,因为其基础设施需要荒谬而未能使用

无论如何,我有Kinesis生产商,消费者工作正常(尽管有高延迟)。我一直在使用我的消费流来验证是否将事件写入流。

但我正在寻找的是一个Stream信息中心,非技术人员可以使用它。

因为在生产中,像管理员/(甚至是懒惰的调试器)这样的人显然不想编写代码来查看流中的事件,而是在仪表板中查看会很有帮助。

我没有看到Kinesis-streams有查询功能。

作为此功能的解决方案,

  • 我可以在将事件写入kinesis后立即使用该事件并应用于另一个支持查询/过滤功能的数据存储。(例如,MongoDB,DynamoDB),这需要时间给我在压力的时间表中实施。

  • 或者,将kinesis事件流式传输到也可以解决我的问题,但Google Analytics并不是为此目的而设计的。它的超级速度很慢,需要15/20秒才会出现在仪表板中,也不会显示新的事件。

enter image description here

我尝试将格式为ComponentTest_Producer_Stream_2_6_117的JSON事件的源kinesis-stream {"eventType": "KinesisEvent", "someField" : "some value", "createdTime" : "some data"}导入kinesis-analytics。

不知何故,它会自动检测到事件并填充在仪表板中(多次尝试后)

kinesis-analytics

  • 我也不确定Cloudwatch是否可以解决这个问题,我的问题完全没有意义?围绕这个亚马逊WS世界的工具太多了,我是它的新手。

我的问题是

1)Kinesis-stream使用什么数据存储来存储事件?

2)建议在kinesis-stream中查询/过滤事件采用哪些策略。

2 个答案:

答案 0 :(得分:0)

我认为您要解决的主要问题是如何构建一个仪表板,让您的队友可以快速查看进入系统。我可以提出两个选择:

  • 运行一个单独的使用者应用程序,该应用程序处理数据并推送到数据存储(如DynamoDB)。您可以构建一个显示此信息的轻量级UI。可以找到一种相关的示例here
  • 将Kinesis数据加载到Elasticsearch集群(相关文档here)并使用Kibana进行可视化。 Kibana是开源的,功能非常强大,可以在UI上轻松进行自定义聚合。

答案 1 :(得分:-1)

您可以使用record preprocessing的Lambda函数在Kinesis中的流数据上设置过滤器。完成此操作后,流中就会有SQL支持,您可以在其中运行基本过滤器并构建仪表板。

另外,根据数据的不同,您可能会拥有更复杂的结构,例如深度嵌套的JSON对象,并且可能变得难以查询。

在这种情况下,您可能希望使用Rockset之类的服务,可以在其中连接和接收来自Kinesis的数据,并使用丰富的Query API端点执行SQL查询/过滤和构建仪表板。

此处的博客文章确切指定了您要查找的内容: https://rockset.com/blog/live-dashboard-on-streaming-data-using-kinesis/。 这说明了如何将Kinesis流连接到Rockset并构建实时仪表板以与团队共享。

免责声明:我在@Rockset工作