解析 logstash 中的 url 个参数

Parse url parameters in logstash

我将 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=

这是我的 logstash 配置文件:

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

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

    stdout
    {
        codec => rubydebug
    }
}

您可以使用 grok 过滤器来匹配 url 中的参数:

filter {
  grok {
    match => [ "message", "%{URIPARAM:url}" ]
  }

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

kv {
    source => "url"
    field_split => "&"
  }

这个 可能会派上用场。希望这对您有所帮助!