首页 > 解决方案 > 从 json 子字符串中提取字段 -​​ logstash

问题描述

我对Logstash过滤东西还很陌生。我已经低于 json 字符串

{
    "changed": false, 
    "msg": "Foo Facts: oma_phase: prd, oma_app: fsd, oma_apptype: obe, oma_componenttype: oltp, oma_componentname: -, oma_peak: pk99, oma_phaselevel: prd"
}

我想提取字段oma_phase, oma_app, oma_apptype, oma_componenttype, oma_componentname, oma_peak & oma_phaselevel

我试过下面的原生 json 过滤器,

filter {
  if [type] == "ansible" {
    json {
      source => "ansible_result"
    }
  }
}

ansible_result是保存上述 json 值的键。但是,有许多键具有不同的值但具有相同的ansible_result键。这会创建很多索引键,我不希望这样。

我想要某种过滤器,它可以Foo Facts在提取oma_*字段后匹配子字符串和那里。

我不知何故无法使用grok过滤器来匹配子字符串。如果你能帮我解决这个问题,那就太好了。

提前谢谢了..

标签: logstashelastic-stacklogstash-grok

解决方案


请尝试以下代码:

filter {
    json {
    source => "message"
    }
   }

ansible_result json 将被视为一条消息。


推荐阅读