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

Logstash custom date format and irregular spaces

我的 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 "http://site/ layouts/CategoryPage.aspx?dsNav=N:10014" "Mozilla/5.0 (Linux; Android 4.4.4; SM-G318HZ Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.95 Mobile Safari/537.36" "cookie"

这是我的 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}' }
  }
}

编辑:我决定截取我的日志文件的样子,因为复制和粘贴时空格不会出现。当我 copy/paste.

时,这些似乎是单个空格

除了您发布的日志行中的 space 之外,我认为您的日志中不会存在它,您的日期解析模式不正确。 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 处理奇怪的 whitespace,这不会删除 whitespace,但会将 spaces 标准化为全部为 1 " "

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