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+", " "
]
}
我的 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+", " "
]
}