我们的IIS服务器以以下格式生成日志:-

Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken

2018-09-13 08:47:52 ::1 GET / - 80 U:papl ::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/68.0.3440.106+Safari/537.36 - 200 0 0 453
2018-09-13 08:47:52 ::1 GET /api/captcha.aspx rnd=R43YM 80 U:papl ::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/68.0.3440.106+Safari/537.36 http://localhost/ 200 0 0 36

现在,我想以一种可以为IP创建单独的列,请求方法类型(即GET或POST),页面名称/api/captcha.aspx的方式配置logstash。

但是它将在elasticSearch中创建一个名为“message”的列,并将整个值存储在此message字段中。

那么我应该在logstash中进行哪些更改以在ElasticSearch for IP,RequestMethod(POST / GET)和PageName中创建单独的列?

目前,我正在使用以下过滤器:-
match => {"message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration} %{URIPATH:uriStem} %{NOTSPACE:uriQuery} %{NUMBER:port} %{NOTSPACE:username} %{IPORHOST:clientIP} %{NOTSPACE:protocolVersion} %{NOTSPACE:userAgent} %{NOTSPACE:cookie} %{NOTSPACE:referer} %{NOTSPACE:requestHost} %{NUMBER:response} %{NUMBER:subresponse} %{NUMBER:win32response} %{NUMBER:bytesSent} %{NUMBER:bytesReceived} %{NUMBER:timetaken}"

在此,它仅创建消息字段,并将所有值存储在此单个字段中。

请帮我。

最佳答案

注意:要测试您的模式,可以使用this site,它可以在处理模式时节省大量时间。

如果只需要IP,request和pageName,则使用的模式太长,您应该尝试提取所需的内容。除此之外,更短的模式将更快地执行,并且改变的 flex 更大。

此过滤器可以正确提取您的要求:

match => {"message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:PageName}"}

使用此模式和您提供的日志,您将获得以下结果(通过我上面链接的网站):

elasticsearch - 为什么LogStash没有在elasticSearch中为IIS日志创建单独的列?-LMLPHP

我用logstash测试了过滤器:
filter {
    grok { match => {"message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:PageName}"} }
}
output {
    stdout { codec => json }
}

使用此输入:



我得到这个结果:
{
   "client":"107.6.166.194",
   "method":"GET",
   "@version":"1",
   "host":"frsred-0077",
   "message":"2018-09-16 04:11:52 W3SVC10 webserver 107.6.166.194 GET /axestrack/homepagedata/ uname=satish34&pwd=3445&panelid=1 80 - 223.188.235.131 HTTP/1.1 Dalvik/1.6.0+(Linux;+U;+Android+4.4.4;+2014818+MIUI/V7.5.2.0.KHJMIDE) - - vehicletrack.biz 200 0 0 730 229 413\r",
   "@timestamp":"2018-09-18T08:13:23.539Z",
   "PageName":"/axestrack/homepagedata/"
}

关于elasticsearch - 为什么LogStash没有在elasticSearch中为IIS日志创建单独的列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52330215/

10-17 03:04