使用Logstash对单个Cookie进行索引

我正在对Apa​​che日志进行一些分析。 我们的日志碰巧捕获了浏览器与之通信的cookie,并且将其与请求一起logging下来。 现在我可以导入这个很长的string,但是我想知道是否有一种方法,每行都有一个可变长度的数组,可以让我search或执行单个cookie的相关性。

所以,基于这条消息线

"message" => "xxxx - - [30/Oct/2014:20:05:01 -0400] \"GET /js/plugins/backbone/backbone.modelbinding.min.js HTTP/1.1\" 304 - \"https://www.website.com/view/home\" \"Mozilla/4.0 ( compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\" \"AUSERID=5286; SERVICEID=08130xx; JSESSIONID=xxxx; AgencyUserSession=xxxx; _ga=GA1.2.xxx; __utma=xxx ;" + 304/304 1146/213/0 29420/47188900045680 0/5011 -/-/- \"xxxx|-|-|xxxx\"",

我可以parsing出这个cookie,并把它放在它自己的字段中。 但是有没有办法让我分解键/值对并将它们存储在与日志行条目相关的数组中?

[“auserid”=“5286”,“serviceid”=“08130xx”等…

谢谢。

您可以使用logstash kvfilter来parsingcookie。

如果您有一个包含"AUSERID=5286; SERVICEID=08130xx; JSESSIONID=xxxx; AgencyUserSession=xxxx; _ga=GA1.2.xxx; __utma=xxx;"的字段cookie

你可以在你的logstash.conf中写下如下的代码:

 kv { source => "cookie" prefix => "cookie_" trim => ";" } 

这会给你的领域:

 cookie_AUSERID => 5286 cookie_SERVICEID => 08130xx ... 

但是我更喜欢明确指定我想要转换为字段的cookie(一些系统创build了许多对我没有意义的cookie,它们只会污染日志):

 kv { source => "cookie" prefix => "cookie_" trim => ";" include_keys => [ "AUSERID", "SERVICEID" ] }