Logstash自定义日期格式和不规则空格

时间:2016-06-29 21:30:20

标签: elasticsearch logstash logstash-grok grok

使用我的grok匹配接收解析失败。我似乎无法找到与我的日志匹配的任何内容。

这是我的日志:

  

2016-06-14 14:03:42 1.1.1.1 GET /origin-www.site.com/ScriptResource.axd?d=jEHA4v5Z26oA-nbsKDVsBINPydW0esbNCScJdD-RX5iFGr6qqeyJ69OnKDoJgTsDcnI1& t = 5f9d5645 200 26222 0" {{ 3}} layouts / CategoryPage.aspx?dsNav = N:10014" " Mozilla / 5.0(Linux; Android 4.4.4; SM-G318HZ Build / KTU84P)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 48.0.2564.95 Mobile Safari / 537.36" "饼干"

这是我的grok比赛。它在grok调试器中工作正常。

filter {
  grok {
    match => { 'message' => '%{DATE:date} %{TIME:time} %{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:status} %{NUMBER:bytes} %{NUMBER:time_taken} %{QUOTEDSTRING:referrer} %{QUOTEDSTRING:user_agent} %{QUOTEDSTRING:cookie}' }
  }
}
编辑:我决定对我的日志文件的截图进行截图,因为在复制和粘贴时空格不会出现。当我复制/粘贴时,这些似乎是单个空格。

http://site/

1 个答案:

答案 0 :(得分:2)

除了您发布的日志中的空格,我认为它不会存在于您的日志中,您的模式在解析日期时是不正确的。 Logstash DATE遵循以下模式:

DATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}
DATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}
DATE %{DATE_US}|%{DATE_EU}

哪种格式与您的YYYY-MM-dd格式不符。我建议使用模式文件并定义自定义日期格式

CUST_DATE %{YEAR}-%{MONTHNUM2}-%{MONTHDAY}

那么你的模式可以是

%{CUST_DATE:date} %{TIME:time} %{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:status} %{NUMBER:bytes} %{NUMBER:time_taken} %{QUOTEDSTRING:referrer} %{QUOTEDSTRING:user_agent} %{QUOTEDSTRING:cookie}

编辑: 您可以使用gsub处理奇怪的空白,这不会删除空格,但会将空格规范化为1" "

mutate {
    gsub => [
      # replace all whitespace characters or multiple adjacent whitespace characters with one space
      "message", "\s+", " "
    ]
  }