首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从json子字符串- logstash中提取字段

从json子字符串- logstash中提取字段
EN

Stack Overflow用户
提问于 2019-09-11 17:35:21
回答 2查看 342关注 0票数 0

我对Logstash过滤的东西还是个新手。我有下面的json字符串

代码语言:javascript
复制
{
    "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过滤器下面尝试过,

代码语言:javascript
复制
filter {
  if [type] == "ansible" {
    json {
      source => "ansible_result"
    }
  }
}

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

我想有某种过滤器,可以匹配的子字符串Foo Facts,并在那里提取的oma_*字段。

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

非常感谢你提前..

EN

回答 2

Stack Overflow用户

发布于 2019-09-12 17:34:30

请尝试以下代码:

代码语言:javascript
复制
filter {
    json {
    source => "message"
    }
   }

ansible_result json将被视为一条消息。

票数 1
EN

Stack Overflow用户

发布于 2019-09-12 18:00:28

这在一开始并不困难,但最终成功地破解了这个难题。

\"msg\": \"Foo Facts: oma_phase: %{DATA:oma_phase}, oma_app: %{DATA:oma_app}, oma_apptype: %{DATA:oma_apptype},( oma_componenttype: %{DATA:oma_componenenttype},)? oma_componentname: %{DATA:oma_componenentname}, oma_peak: %{DATA:oma_peak}, oma_phaselevel: %{DATA:oma_phaselevel}\"

从日志中,我了解到一些日志中缺少oma_componenttype。因此,我使用()?将其标记为可选字段

如果没有下面在线解析器的帮助,这是不可能的。

  1. grokdebug
  2. Grok Constructor
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57886180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档