我对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
过滤器来匹配子字符串。如果您能帮助我,那将是非常不错的。
非常感谢。
答案 0 :(得分:1)
请尝试以下代码:
filter {
json {
source => "message"
}
}
ansible_result json将被视为一条消息。
答案 1 :(得分:0)
开始时并不困难,但最终设法解决了这一难题。
\"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
。所以我用()?
没有下面的在线解析器的帮助,这是不可能的。