【问题标题】:Logstash and looking up additional data from a relational table?Logstash 并从关系表中查找其他数据?
【发布时间】:2019-04-16 21:30:56
【问题描述】:

我每天都会发布移动应用日志数据(最终它将成为数据流)。我正在寻找不同的解决方案来处理这些日志数据并提供分析。我正在考虑使用 logstash/elasticsearch/kibana 组合,但我们在 redshift 数据库中存储了有关用户的其他数据。因此,除了移动数据之外,我还想在与移动应用程序交互时从 redshift 中提取有关用户的其他数据。

但是,我在某些地方读到,通过 logstash 进行实际的数据库查询是不可行的,但您可以使用字典文件来查找每个用户。

我有两个关于这种方法的问题

  1. 此查找文件的大小是否有限制?我的记录会
  2. 从 redshift 表生成查找文件的过程能否完全自动化(最好通过 aws 服务) - 即每晚刷新查找表并将其发布到 logstash,然后用于 Kibana 中的突破

我们目前的做法是使用 lambda 函数处理每日 jason 文件,将其发布到 s3,然后将其读入 redshift 表。然后将此数据处理成会话并与其他表连接以生成用于可视化的最终数据集。这目前在 Tableau 中完成,但我们正在探索其他选项(例如 quicksight,或者可能是 ELK 堆栈)

只是想弄清楚哪种解决方案可以扩展到点击流数据,并且将是最有用的。

谢谢!

【问题讨论】:

    标签: amazon-web-services elasticsearch aws-lambda logstash kibana


    【解决方案1】:

    logstash 7 有一个 jdbc_streaming 过滤器插件,用于动态地向您的事件添加内容,以及用于静态内容的 jdbc_static 过滤器。

    如您所见,您还可以使用translate 过滤器。手册页说他们已经测试了多达 100,000 个条目的“非常大”数据集,因此您的数据集可能需要进行一些测试。这个过滤器的好处是它会在检测到更改时重新加载数据,因此您可以按照自己的计划(例如 cron)发布数据,而无需重新启动 logstash。请注意未获得翻译值的事件,这可能表明您的发布频率应该更新。

    【讨论】:

    • 翻译过滤器对于这个用例来说是个好主意,但是如果字典文件变得太大,它可能会在启动或重新加载时阻塞logstash管道,如果发生这种情况,您可以检查@987654324 @filter,它将使用您的键值数据查询 memcached 服务器,并且非常快速且易于实现。
    • 翻译字典在单独线程中加载的文档天数,因此不应阻塞常规事件处理。
    • 这取决于大小,分离的线程将影响降至最低,但就我而言,字典确实太大(10M+ 行),无法产生任何影响。
    • 因为他们讨论了 100K 行的“非常大”数据集,我认为 10M 会更极端。但是,它仍应在单独的线程中加载,并且不会阻塞管道。
    猜你喜欢
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 2017-03-05
    • 2013-05-08
    • 2019-07-24
    相关资源
    最近更新 更多