elasticsearch 日志存储自定义日期格式和不规则空格,elasticsearch,logstash,logstash-grok,grok,elasticsearch,Logstash,Logstash Grok,Grok" /> elasticsearch 日志存储自定义日期格式和不规则空格,elasticsearch,logstash,logstash-grok,grok,elasticsearch,Logstash,Logstash Grok,Grok" />

elasticsearch 日志存储自定义日期格式和不规则空格

elasticsearch 日志存储自定义日期格式和不规则空格,elasticsearch,logstash,logstash-grok,grok,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-nbskdvsbinpydw0esbnccjdd-RX5iFGr6qqeyJ69OnKDoJgTsDcnI1&t=5f9d5645 200 26222 0“布局/类别页.aspx?dsNav=N:10014”“Mozilla/5.0(Li

接收到与我的grok匹配的解析失败。我似乎找不到任何与我的日志相符的东西

这是我的日志:

2016-06-14 14:03:42 1.1.1.1 GET/origin-www.site.com/ScriptResource.axd?d=jEHA4v5Z26oA-nbskdvsbinpydw0esbnccjdd-RX5iFGr6qqeyJ69OnKDoJgTsDcnI1&t=5f9d5645 200 26222 0“布局/类别页.aspx?dsNav=N:10014”“Mozilla/5.0(Linux;安卓4.4.4.4;SM-G318HZ构建/KTU84P)AppleWebKit/537.36(类似Gecko)Chrome/48.0.2564.95 Mobile Safari/537.36“cookie”

这是我的火柴。它在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}' }
  }
}
编辑:我决定做一个屏幕截图,看看我的日志文件是什么样子的,因为复制和粘贴时空间不会出现。当我复制/粘贴时,这些似乎是单个空格


在您发布的日志行中的空格旁边,我假设您的日志中不存在该空格,您的模式在解析日期上不正确。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“”


您发布的日志行在URI参数中有一个空格,位于
xd?d=jEHA4
yes。很抱歉。这在请求中不存在。谢谢。我现在在日志中看到了这一点。“解析映射失败[默认]:[@time]的映射定义有不支持的参数:[格式:hh:mm:ss],”由“=>{”类型“=>”映射程序解析异常“,”原因“=>”r[@time]的映射定义有不支持的参数:[格式:hh:mm:ss]}},有趣的是,我找不到我定义时间的任何地方。我也为time创建了一个自定义模式,但出现了相同的错误。添加模板_overwrite=>true修复了该问题。抱歉,遇到了另一个问题。看起来我的日志文件在日志项之间添加了很大的空间。他们是单一的空间,但我认为这是摆脱我的模式匹配。调试器甚至不喜欢这些空格。有什么可以做的吗?2016-06-14 14:03:42 1.1.8.4 Get如果在某些地方可以放置空格,也可以不放置空格,
()?
,这是一个可选空格
mutate {
    gsub => [
      # replace all whitespace characters or multiple adjacent whitespace characters with one space
      "message", "\s+", " "
    ]
  }