如何使用logstash搜索作为散列的消息

如何使用logstash搜索作为散列的消息,logstash,grok,Logstash,Grok,全部 我正在使用logstash从远程服务器发送日志。 我收到的消息是如下所示的哈希类型: [2014-12-06 23:59:57] 112.254.70.37 <AUDIO> {"type":"Stat", "eid":4800316, "mid":"87192133091532", "ccid":3228662, "ver":102, "ip":"114.113.200.227", "port":9081, "jitter":"0 0 0 0 0 ", "break":"0 0

全部

我正在使用logstash从远程服务器发送日志。 我收到的消息是如下所示的哈希类型:

[2014-12-06 23:59:57] 112.254.70.37 <AUDIO> {"type":"Stat", "eid":4800316, "mid":"87192133091532", "ccid":3228662, "ver":102, "ip":"114.113.200.227", "port":9081, "jitter":"0 0 0 0 0 ", "break":"0 0 0 0 0 ", "interrupt":"0 0 0 0 0 ", "tcp_rtt":"40 40 45 50 50 ", "udp_rtt":"31 33 35 40 35 ", "all_pkts":"107180 107193 107249 107323 107358 ", "lost":"0 0 0 0 0 ", "delay":"40.78", "pull":"3 3 3 3 3 "}
[2014-12-06 23:59:57]112.254.70.37{“类型”:“Stat”,“eid”:4800316,“mid”:“87192133091532”,“ccid”:3228662,“ver”:102,“ip”:“114.113.200.227”,“port”:9081,“jitter”:“0 0 0 0 0 0 0 0 0 0 0”,“中断”:“0 0 0 0 0 0 0 0 0 0 0 0 0 0”,“tcp_rtt”:“40 40 40 40 45 50”,“udp_rtt”:“31 33 35”,“所有PKT”:“107180 107193 107249 107358”,“丢失”:“0 0 0”,“延迟”:“40.78”,“拉动”:“3”}
那我怎么写grok部分呢,我到处都在找医生,但我还是不知道怎么写。。。
thx!

首先,您必须通过
grok
过滤器解析json数据。然后,使用
json
过滤器解析所有hashmap值。通过此配置,我可以解析日志并创建所有
字段
。希望对您有所帮助

input {
    stdin{
    }
}

filter {
    grok {
    match => [ "message" , "\[%{TIMESTAMP_ISO8601:datatime}\] %{IP:ip} <%{WORD:level}> %{GREEDYDATA:data}"]
    }
    json {
            source => "data"
    }
}

output {
    stdout{
            codec => rubydebug
    }
}
输入{
标准{
}
}
滤器{
格罗克{
match=>[“message”,“\[%{TIMESTAMP\u ISO8601:datatime}\]%{IP:IP}%{GREEDYDATA:data}”]
}
json{
source=>“数据”
}
}
输出{
stdout{
编解码器=>rubydebug
}
}

这是JSON。不要使用grok,使用JSON解析器。