解析logstash中的url参数

Fil*_*ano 3 elasticsearch logstash kibana

我正在将 url 中的数据发送到 logstash 5.2,我想在 logstash 中解析它,所以每个 url 参数都变成了 logstash 中的一个变量,我可以在 kibana 中正确地可视化它。

http://127.0.0.1:31311/?id=ID-XXXXXXXX&uid=1-37zbcuvs-izotbvbe&ev=pageload&ed=&v=1&dl=http://127.0.0.1/openpixel/&rl=&ts=1488314512294&de=windows-1252&sr=1600x900&vp=1600x303&cd=24&dt=&bn=Chrome%2056&md=false&ua=Mozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_3)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36&utm_source=&utm_medium=&utm_term=&utm_content=&utm_campaign=
Run Code Online (Sandbox Code Playgroud)

这是我的 logstash conf 文件:

input 
{
  http 
  {
    host => "127.0.0.1"
    port => 31311
  }
}

output
{
    elasticsearch
    {
        hosts => ["localhost:9200"]
    }

    stdout
    {
        codec => rubydebug
    }
}
Run Code Online (Sandbox Code Playgroud)

Kul*_*gar 6

您可以使用grok过滤器来匹配您的 url 中的参数,如下所示:

filter {
  grok {
    match => [ "message", "%{URIPARAM:url}" ]
  }
Run Code Online (Sandbox Code Playgroud)

然后您可能必须使用kv过滤器来拆分您的数据:

kv {
    source => "url"
    field_split => "&"
  }
Run Code Online (Sandbox Code Playgroud)

这个SO可能会变得方便。希望这可以帮助!