将MongoDB中的数据添加到日志文件中,日志文件由Logstash处理并解析为Elasticsearch

将MongoDB中的数据添加到日志文件中,日志文件由Logstash处理并解析为Elasticsearch,mongodb,logstash,elastic-stack,Mongodb,Logstash,Elastic Stack,很抱歉这个标题,我的案子真的无法用一句话来解释 以下是我的情况: 我有一大组日志文件(大约4GB),我希望用Logstash解析这些文件,以便与弹性堆栈(Logstash、Elasticsearch、Kibana)一起使用 在日志中,有一个序列号,我已经用Logstash成功解析了它。此数字对应于MongoDB集合的索引。在解析每个日志时,我希望能够使用解析后的数字查询集合,并检索希望包含在传递给Elasticsearch的最终输出中的数据 为了让事情更清楚,这里有一个粗略的例子。假设我有原始日

很抱歉这个标题,我的案子真的无法用一句话来解释

以下是我的情况:

  • 我有一大组日志文件(大约4GB),我希望用Logstash解析这些文件,以便与弹性堆栈(Logstash、Elasticsearch、Kibana)一起使用
  • 在日志中,有一个序列号,我已经用Logstash成功解析了它。此数字对应于MongoDB集合的索引。在解析每个日志时,我希望能够使用解析后的数字查询集合,并检索希望包含在传递给Elasticsearch的最终输出中的数据
  • 为了让事情更清楚,这里有一个粗略的例子。假设我有原始日志:

    2017-11-20 14:24:14.011 123 log_number_one
    
    在解析后的日志发送到Elasticsearch之前,我想用
    123
    查询我的MongoDB集合,并获取数据
    data1
    data2
    以附加到要发送到Elasticsearch的文档中,因此我的最终结果将包含类似以下内容的字段:

    { 
        timestamp: 2017-11-20 14:24:14.011, 
        serial: 123, 
        data1: "foo", 
        data2: "bar", 
        log: log_number_one
    }
    
    我认为,实现这一点的一个更简单的方法是简单地预处理日志,并在通过Logstash解析之前通过MongoDB运行数字。然而,鉴于我拥有4GB的日志文件,我希望通过一次突袭就能实现这一目标。我想知道我的edge案例是否可以通过ruby filter插件来解决,在这个插件中,我可以运行一些任意的ruby代码来完成上述操作

    如有任何帮助/建议,将不胜感激

    弹性团队成员的回答(所有学分归他):

    根据MongoDB中记录的数量和数据的总大小(假设它是一个大小合理的数据集),您可以将数据提取到一个文件中,其中每个序列号都与JSON格式的数据的字符串表示相关联。然后,可以使用基于序列号的序列化JSON填充字段,然后使用子过滤器解析该字段并将其添加到事件中

    参考: