当前位置: 首页 > 面试题库 >

如何从文本文件行解析logstash / grok中的json?

祁凯泽
2023-03-14
问题内容

我有一个看起来像这样的日志文件(简化)

Logline样本

MyLine data={"firstname":"bob","lastname":"the builder"}

我想提取 数据 包含的json 并创建两个字段,一个用于名字,一个用于姓氏。但是,我得到的输出是这样的:

{"message":"Line data={\"firstname\":\"bob\",\"lastname\":\"the builder\"}\r","@version":"1","@timestamp":"2015-11-26T11:38:56.700Z","host":"xxx","path":"C:/logstashold/bin/input.txt","MyWord":"Line","parsedJson":{"firstname":"bob","lastname":"the builder"}}

如你看到的

..."parsedJson":{"firstname":"bob","lastname":"the builder"}}

那不是我所需要的,我需要在kibana中为firstname和lastname创建字段,但是logstash不会使用json过滤器提取字段。

LogStash配置

input {
  file {
        path => "C:/logstashold/bin/input.txt"        
       }
}

filter {

   grok {
            match => { "message" => "%{WORD:MyWord} data=%{GREEDYDATA:request}"}        
        }

    json{
        source => "request"
        target => "parsedJson"
        remove_field=>["request"]
    }   
}

output {  
    file{
        path => "C:/logstashold/bin/output.txt"
    }   
}

非常感谢任何帮助,我敢肯定我错过了一些简单的东西

谢谢


问题答案:

json过滤器之后,添加另一个名为的过滤器mutate,以添加将从该parsedJson字段中获取的两个字段。

filter {
  ...
  json {
     ...
  }
  mutate {
    add_field => {
      "firstname" => "%{[parsedJson][firstname]}"
      "lastname" => "%{[parsedJson][lastname]}"
    }
  }
}

对于上面的示例日志行,将得出:

{
       "message" => "MyLine data={\"firstname\":\"bob\",\"lastname\":\"the builder\"}",
      "@version" => "1",
    "@timestamp" => "2015-11-26T11:54:52.556Z",
          "host" => "iMac.local",
        "MyWord" => "MyLine",
    "parsedJson" => {
        "firstname" => "bob",
         "lastname" => "the builder"
    },
     "firstname" => "bob",
      "lastname" => "the builder"
}


 类似资料:
  • 问题内容: 我有一个格式的JSON: 我正在尝试使用logstash解析此JSON。基本上,我希望Logstash输出是可以使用kibana进行分析的key:value对的列表。我认为可以开箱即用。从大量的阅读中,我了解到我必须使用grok插件(我仍然不确定json插件的用途)。但是我无法获得所有领域的事件。我收到多个事件(甚至对于JSON的每个属性都一个)。像这样: 我应该使用多行编解码器还是j

  • 所以我在这方面做了一点工作,遇到了麻烦。当它开始处理时,它总是给我一个致命的错误<基本上,我想从互联网上读取一个文本文件,然后对其进行解析,这样我就可以开始分解它,并使用JSON解析器处理JSON数据。但是再往下一点(我已经完成了部分)。我只是在连接和下载数据方面遇到了问题。我只想读入文本文件,然后再次打印出来。谢谢你在这方面的帮助。 这就是它给我的 01-26 15:11:48.373 1958

  • 问题内容: 我正在尝试从JSON文件解析数据。我试图将已解析/获取的数据放入带有标签的UIView或Webview中。JSON文件如下所示: 在上有一些帖子,展示了如何解析从WebURL检索到的JSON,但实际上我已经有一个要解析的JSON文件。如何从文件解析JSON? 问题答案: 创建空的文本文件(新文件/其他/空),例如“ example.json” 将json字符串粘贴到文件中。 使用以下行

  • 问题内容: 我有一个包含以下行的文本文件: 每个“ |” 符号表示它有一列。我必须从“ |”内部的每一行中提取信息 迹象。当我尝试以下代码时: 它给了我: 如何正确解析? 问题答案: 试试这个:

  • 问题内容: 我正在尝试从logstash开始,并且我的应用程序具有以下类型的日志。这里的5表示接下来将有5行是针对不同相关事物收集的统计信息。 这些基本上是应用程序统计信息,每行指示大约一个资源。 有没有一种方法可以使用logstash正确解析它,以便可以将其用于elasticsearch? 编辑 : 这是我正在使用的配置,第一组统计信息已正确解析,但在该管道阻塞之后。请注意有150个此类日志,但

  • 问题内容: 我想在Elasticsearch中导入一个文本文件。文本文件每行包含3个值。经过数小时的奋斗,我没有完成它。非常感谢您的帮助。 安装了Logstash的Elasticsearch 5.4.0。 样本数据: 还构建了一个python脚本,但是它太慢了: 编辑:感谢它的工作,但我想我的筛选器很烂,因为我希望它看起来像这样: 然后将数据如下所示: 问题答案: 只需将其放入一个名为: 然后使用