让grok过滤器创建嵌套字段

Killerpixler

我有一个drupal watchdog syslog文件,我想将其解析为两个嵌套字段,即syslog部分和message部分,以便得到此结果

syslogpart: {
  timestamp: "",
  host: "",
  ...
},
messagepart:{
  parsedfield1: "",
  parsedfield2: "",
  ...
}

我尝试制作一个自定义模式,如下所示:

DRUPALSYSLOG (%{SYSLOGTIMESTAMP:date} %{SYSLOGHOST:logsource} %{WORD:program}: %{URL:domain}\|%{EPOCH:epoch}\|%{WORD:instigator}\|%{IP:ip}\|%{URL:referrer}\|%{URL:request}\|(?<user_id>\d+)\|\|)

然后运行 match => ['message', '%{DRUPALSYSLOG:drupal}'}

但是我没有嵌套的响应,我得到了一个文本块drupal: "ALL THE MATCHING FIELDS IN ONE STRING",然后所有的匹配项也分开了,但是没有嵌套在drupal下,而是嵌套在同一级别上。

马格努斯·贝克(MagnusBäck)

是的,这是预期的。我认为没有办法用grok产生嵌套字段。我怀疑您将不得不使用mutate过滤器将它们移动到位。

mutate {
    rename => {
      "date" => "[drupal][date]"
      "instigator" => "[drupal][instigator]"
      ...
    }
  }

如果您有很多字段,使用红宝石滤镜可能会更方便如果在Drupal字段前面加上“ drupal”,则尤其如此。–然后,您将编写一个过滤器,以将具有该前缀的所有字段移动到具有相同名称的子字段中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章