使用 Logstash 索引单个 cookie

使用 Logstash 索引单个 cookie

我正在对 Apache 日志进行一些分析。我们的日志恰好捕获了浏览器传达的 cookie,并将其与请求一起记录下来。现在我可以很好地导入那个长字符串,但是我想知道是否有办法每行都有一个可变长度的数组,让我可以搜索或对单个 cookie 执行推论。

因此,根据这条消息行

"message" => "x.x.x.x - - [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 -/-/- \"x.x.x.x|-|-|x.x.x.x\"",

我可以解析出 cookie 并将其完整地放入其自己的字段中。但是,有没有办法让我分解键/值对并将它们存储在与日志行条目关联的数组中?

[“auserid” = “5286”,“serviceid” = “08130xx”,... 等等。

谢谢。

答案1

您可以使用 logstash滤波器解析 cookie。

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

你可以在 logstash.conf 中写入类似以下内容:

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

这将为您提供字段:

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

但我更喜欢明确指定想要转换为字段的 cookie(某些系统会创建大量对我来说没有意义的 cookie,它们只会污染日志):

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

相关内容