使用filebeat收到ngx日志后,通过logstash分析messages段的日志,
filebeat会自动增加一些元信息如下:
"message": "{\"@timestamp\":\"2017-09-29T09:01:14.458Z\",\"beat\":{\"hostname\":\"test-write01\",\"name\":\"test-write01\",\"version\":\"5.6.2\"},\"input_type\":\"log\",\"log_hostname\":\"test\",\"message\":\"18.21.47.16 - - [29/Sep/2017:17:01:43 +0800] [GET /jrocket2/api/v3/loan_applications_xiaoyang HTTP/1.1] [200] [884] [949] [-] [https://m.test.com/staff/main.html] [0.018] [0.018] [192.168.80.100:8080] [200] [-] [-] [H5-J] [2] [-] [18216326100] [Mozilla/5.0 (Linux; U; Android 6.0; zh-CN; HUAWEI VNS-AL00 Build/HUAWEIVNS-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.7.0.953 Mobile Safari/537.36] [GET] [japi.wolaidai.com] [13.24.47.18] [15471506589601.447183.214.47.1689498577] [-]\",\"offset\":14579,\"source\":\"/data/nginx/log/access2.log\",\"tags\":[\"test_tags\"],\"type\":\"nginx_access\"}",
请问如何解析“beat”内的内容,目的是取hostname字段有助于后期的统计分析?
本人有尝试过使用filter的gork去match "beat"去分析,但无法成功(match message解析是正常的),
其它通过fleid增加的段也无法gork match成功如上面内容的(log_hostname/input_type等),个人感觉这些
元字段是否需要特殊的处理?
附部分测试配置
gork {
match => ["beat","%{GREEDYDATA:beat}"]
match => ["log_hostname","%{WORD:HostName}"]
}
filebeat会自动增加一些元信息如下:
"message": "{\"@timestamp\":\"2017-09-29T09:01:14.458Z\",\"beat\":{\"hostname\":\"test-write01\",\"name\":\"test-write01\",\"version\":\"5.6.2\"},\"input_type\":\"log\",\"log_hostname\":\"test\",\"message\":\"18.21.47.16 - - [29/Sep/2017:17:01:43 +0800] [GET /jrocket2/api/v3/loan_applications_xiaoyang HTTP/1.1] [200] [884] [949] [-] [https://m.test.com/staff/main.html] [0.018] [0.018] [192.168.80.100:8080] [200] [-] [-] [H5-J] [2] [-] [18216326100] [Mozilla/5.0 (Linux; U; Android 6.0; zh-CN; HUAWEI VNS-AL00 Build/HUAWEIVNS-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.7.0.953 Mobile Safari/537.36] [GET] [japi.wolaidai.com] [13.24.47.18] [15471506589601.447183.214.47.1689498577] [-]\",\"offset\":14579,\"source\":\"/data/nginx/log/access2.log\",\"tags\":[\"test_tags\"],\"type\":\"nginx_access\"}",
请问如何解析“beat”内的内容,目的是取hostname字段有助于后期的统计分析?
本人有尝试过使用filter的gork去match "beat"去分析,但无法成功(match message解析是正常的),
其它通过fleid增加的段也无法gork match成功如上面内容的(log_hostname/input_type等),个人感觉这些
元字段是否需要特殊的处理?
附部分测试配置
gork {
match => ["beat","%{GREEDYDATA:beat}"]
match => ["log_hostname","%{WORD:HostName}"]
}
1 个回复
kuanglin
赞同来自:
但是不是添加在message字段中,message保存的是应用程序原本的日志内容。
你需要取的hostname是filebeat的还是应用程序的?如果是filbeat的不需要用grok解析,比如在kibana中可以看到如下: