Ваш шаблон grok не совпадает со всем в вашем журнале, поэтому он не работает.Например, %{WORD}
будет соответствовать только Mozilla
, а не /5.0
.Вы можете создать собственный шаблон, чтобы соответствовать целому browser/version
, как это (?<browser>%{WORD}(/%{NUMBER})?)
.
Вы можете избежать INFO (6):
, просто сопоставив его с .*
, и он будет проигнорирован в выводе.
Что касается пробелов, пожалуйста, сопоставьте их, используя предопределенный шаблон grok%{SPACE}
.
код в конце может стать необязательным при создании пользовательского шаблона, то есть (?<optional_code>%{WORD}?)
Тогда весь ваш шаблон grok станет
%{TIMESTAMP_ISO8601:timestamp}.*%{IP:ip}%{SPACE}%{WORD:company_name}%{SPACE}%{EMAILADDRESS:email}%{SPACE}%{URIPROTO:method}%{SPACE}%{URIPATH:page}%{SPACE}(?<browser>%{WORD}(/%{NUMBER})?)%{SPACE}\(%{GREEDYDATA:content}\).*\{%{GREEDYDATA:json}\}%{SPACE}(?<optional_code>%{WORD}?)
{
"timestamp": [
[
"2016-09-01T10:58:41+02:00"
]
],
"YEAR": [
[
"2016"
]
],
"MONTHNUM": [
[
"09"
]
],
"MONTHDAY": [
[
"01"
]
],
"HOUR": [
[
"10",
"02"
]
],
"MINUTE": [
[
"58",
"00"
]
],
"SECOND": [
[
"41"
]
],
"ISO8601_TIMEZONE": [
[
"+02:00"
]
],
"ip": [
[
"165.225.76.76"
]
],
"IPV6": [
[
null
]
],
"IPV4": [
[
"165.225.76.76"
]
],
"SPACE": [
[
" ",
" ",
" ",
" ",
" ",
" ",
" "
]
],
"company_name": [
[
"entreprise1"
]
],
"email": [
[
"email1@gmail.com"
]
],
"EMAILLOCALPART": [
[
"email1"
]
],
"HOSTNAME": [
[
"gmail.com"
]
],
"method": [
[
"POST"
]
],
"page": [
[
"/application/controller/action"
]
],
"browser": [
[
"Mozilla/5.0"
]
],
"WORD": [
[
"Mozilla",
"86rkt2dqsdze5if1bqldfl1"
]
],
"NUMBER": [
[
"5.0"
]
],
"BASE10NUM": [
[
"5.0"
]
],
"content": [
[
"Windows NT 6.1; Trident/7.0; rv:11.0"
]
],
"json": [
[
""getid":"1""
]
],
"optional_code": [
[
"86rkt2dqsdze5if1bqldfl1"
]
]
}
При онлайн-тестировании добавьте пользовательские шаблоны для электронной почты, так как они в настоящее время не поддерживаются,
EMAILLOCALPART [a-zA-Z][a-zA-Z0-9_.+-=:]+
EMAILADDRESS %{EMAILLOCALPART}@%{HOSTNAME}