首页 > 解决方案 > 基巴纳。从包含 JSON 的 @message 中提取字段

问题描述

我想从包含 json 的 @message 字段中提取 Kiabana 字段。前任:

Audit{
uuid='xxx-xx-d3sd-fds3-f43',
action='/v1.0/execute/super/method', 
resultCode='SUCCESS', 
browser='null', 
ipAddress='192.168.2.44', 
application='application1', 
timeTaken='167'
} 

拥有“action”和“application”字段,我希望能够找到命中应用程序的前 5 个请求。

我从类似的东西开始:

filter {
    if ([message]~ = "Audit") {
        grok {
            match => {
                "message" => "%{WORD:uuid}, %{WORD:action}, %{WORD:resultCode}, %{WORD:browser}, %{WORD:ipAddress}, %{WORD:application}, %{NUMBER:timeTaken}"
            }
            add_field => ["action", "%{action}"]
            add_field => ["application", "%{application}"]
        }
    }
}

但这似乎与现实相去甚远。

标签: elasticsearchlucenekibanalogstash-grok

解决方案


如果“审计”的内容真的是json格式,可以使用过滤插件“json”

json{
    source => "Audit"
}

它将为您进行解析并创建所有内容。你不需要 grok / add_field。


推荐阅读