Logstash过滤器将URL从文本字段提取到新的字段调用URL

时间:2015-11-08 08:30:32

标签: filter logstash logstash-grok elastic-stack

我正在输入一个名为text的字段。这个字段有时可能包含一个URL。我想要做的是从文本中提取URL,并将它们放在一个名为URL的新字段中。

我尝试了grok,但似乎grok模式需要特定的日志格式才能使其工作。例如,以下内容将起作用:

5546 hello www.google.com
{id} {text} {URL}

但以下不会

4324 hello my name is Ryan www.yahoo.com
{id} {text} {URL}

相反,它会以文本形式打招呼,而不是将www.yahoo.com作为URL。有没有解决的办法?请注意,有时,文字可能如下所示:

www.gmail.com hello everyone

我可以使用哪种过滤器从Logstash文本中提取URL?

谢谢。

1 个答案:

答案 0 :(得分:0)

grok {}是一个正确的过滤器,用于获取输入字符串并将其解析为字段。诀窍是制作一个或多个符合您要求的模式。

请查看grok debugger,这是构建您自己的模式的非常有用的工具。慢慢开始,从左到右工作,确保事情与您想要的方式相匹配,然后再进行下一步输入。

调试器还有一个指向标准grok模式的链接,您应该熟悉它们。您的示例本身不包含网址,但包含主机,该主机通常与%{HOSTNAME}匹配。

要在主机之前匹配未知数量的内容,请尝试%{DATA}。