1

我有这种日志 21.4.1.2 - - [28/Dec/2016:12:18:40 +0000]“GET a/b/c/d/e/f HTTP/1.1“200 984072”Mozilla/5.0(Windows NT 10.0; WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/55.0.2883.87 Safari/537.36“0.104 0.103。 现在我应该如何使用grok模式来提取这个? 我不知道也没有字段,也就是说rest api也可以是a/b/c和a/b/c/d/e/f/g。我应该如何处理它,以便我可以用a,b或c以kibana分组。什么是正确的方式来提取其余api在logstash

+0

此答案可能有所帮助:http://stackoverflow.com/questions/37605189/how-to-get-url-path-using-logstash-on-elasticsearch/37606224#37606224 – Val

+0

感谢@Val你的时间,但你发布的问题链接是当有查询参数,但在我的情况下,它是url的一部分例如: - facebook.com/user1,facebook.com/user2,我想抓住脸书.com作为一个字段,用户作为其他字段。只有扭曲的是,可以有像a/b/c这样的url的多个部分。 – agrawal1084

回答

1

如果存在已知深度,则可以将URL字段重新注册到这些字段中。

如果存在任意深度,mutate-split可以创建它们的数组,但它们不会有用。

csv {}过滤器,它可能采取“/”作为分隔符,并会产生一堆称为“column1”,“column2”等字段?

0

有一个%{GREEDYDATA:value} grok模板,您可以使用它来提取API路径部分,从那里您可以分割“/”。在调试grok模式http://grokdebug.herokuapp.com/时,此工具非常有用。

所以下手:

%{IP:clientip} \- \- \[%{NOTSPACE:date} \+%{INT}\] \"%{WORD:action} %{GREEDYDATA:api} %{WORD:protocol}/%{NUMBER:protocolNum}\" %{NUMBER:status} %{NUMBER} %{QUOTEDSTRING} %{NUMBER} %{NUMBER} 

,这将给你在API领域的API路径。

或者,我们正在研究Moesif,它是一个API调试和分析工具(https://www.moesif.com/features),它可能对您有所帮助,具体取决于您的需求。 (完全披露,我是首席执行官)

相关问题