了解模式

定义摸索模式

您可以使用本附录中的 grok 模式定义日志数据的结构。

您可以使用单个模式,也可以将多个模式组合起来定义一个更大的模式,还可以创建自定义模式。

数据收集器阶段定义摸索模式时,需要配置以下属性:
Grok 模式定义
用于定义复杂或自定义的摸索模式。 您可以使用此属性为单个图案定义图案,也可以定义多个图案,以便在更大的图案中使用。
在配置模式定义时,请先说明模式名称,然后再说明模式描述如下:
<PATTERN NAME> <grok pattern>
<PATTERN NAME2> <grok pattern>
下面的示例定义了几种模式: MYHOSTTIMESTAMP, MYCUSTOMPATTERN 扩展到 MYHOSTTIMESTAMP, 以及 DURATIONLOG
MYHOSTTIMESTAMP %{CISCOTIMESTAMP:timestamp} %{HOST:host}
MYCUSTOMPATTERN %{MYHOSTTIMESTAMP} %{WORD:program}%{NOTSPACE} %{NOTSPACE}
DURATIONLOG %{NUMBER:duration}%{NOTSPACE} %{GREEDYDATA:kernel_logs}
Grok 模式
定义用于评估数据的实际 grok 模式。 您可以输入预定义的摸索模式,如 %{COMMONAPACHELOG}。 或者,您也可以使用本附录中列出的模式或在 "Grok 模式描述 "属性中定义的模式来定义自定义 grok 模式。
例如,在 Grok 模式描述属性中定义示例模式后,可使用这些模式配置 Grok 模式属性,具体如下:
%{MYCUSTOMPATTERN} %{DURATIONLOG}

下图显示了用户界面中的配置示例:

Grok Pattern 和 Grok Pattern Definition 属性

一般摸索模式

您可以使用以下通用 grok 模式定义日志数据的结构:

用户
%{USERNAME}
用户名
[a-zA-Z0-9._-]+
BASE10NUM
(?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+)))
BASE16FLOAT
\b(?<![ 0-9A-Fa-f.])(?:[+-]?(?:0x )?(?:(?:[ 0-9A-Fa-f ]+(?:\[ 0-9A-Fa-f ]*)?)|(?:\[ 0-9A-Fa-f ]+)))\b
INT
(?:[+-]?(?:[0-9]+))
非内点数
\b(?:[0-9]+)\b
NUMBER
(?:%{BASE10NUM}) BASE16NUM (?<![0-9A-Fa-f])(?:[+-]?(?:0x)?(?:[0-9A-Fa-f]+))
POSINT
\b(?:[1-9][0-9]*)\b
WORD
\b\w+\b
非空间
\S+
空间
\s*
数据
.*?
贪婪数据
.*
引文
(?>(?<!\\)(?>"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``))
UUID
[A-Fa-f0-9]{8}-(?:[A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}

日期和时间摸索模式

您可以使用以下日期和时间摸索模式定义日志数据的结构:

|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?
月号
(?:0?[1-9]|1[0-2])
MONTHNUM2
(?:0[1-9]|1[0-2])
(?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])
DAY
(?:周一(?:日)?|周二(?:日)?|周四(?:周日)?|周五(?:日)?|周六(?:周日)?|周日(?:日)?)
(?>\d\d) {1,2}
小时
(?:2[0123]|[01]?[0-9])
分钟
(?:[0-5][0-9])
SECOND
(?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)time (?!<[0-9])% {HOUR} :% {MINUTE} (?::% {SECOND} )(?![0-9])
注: 在大多数时间标准中,60 是一个闰秒。
日期_美国
%{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}
日期_欧盟
%{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}
ISO8601_TIMEZONE
(?:z|[+-]% {HOUR} (?::?% {MINUTE} ))
ISO8601_SECOND
(?:% {SECOND} |60)
TIMESTAMP_ISO8601
% {YEAR} -% {MONTHNUM} -% {MONTHDAY} [t ]% {HOUR} :?% {MINUTE} (?::?% {SECOND} )?% {ISO8601_TIMEZONE}?
日期
%{DATE_US}|%{DATE_EU}
日期
%{DATE}[- ]%{TIME}
TZ
(?:[pmce][sd]t|utc)
DATESTAMP_RFC822
%{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ}
DATESTAMP_RFC2822
%{DAY}, %{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{ISO8601_TIMEZONE}
其他日期戳
%{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR}
日期戳事件日志
%{YEAR}%{MONTHNUM2}%{MONTHDAY}%{HOUR}%{MINUTE}%{SECOND}

Java 摸索模式

您可以使用以下与 Java 相关的 grok 模式定义日志数据的结构:
JavaClass
(?:[a-zA-Z$_][a-zA-Z$_0-9]*\.)*[a-zA-Z$_][a-zA-Z$_0-9]*
JAVAFILE
(?:[A-Za-z0-9_. -]+)
空格字符可用于匹配特殊情况,如本地方法或未知来源。
JavaMethod
(?:(<init>)|[ a-zA-Z$_ ][ a-zA-Z$_0-9 ]*)
javastacktracepart
% {SPACE} at % {JAVACLASS:class} \.% {JAVAMETHOD:method} \(% {JAVAFILE:file} (?::% {NUMBER:line} )?\)
在特殊情况下,如本地方法或未知来源,行号是可选的。

日志模式

您可以使用以下与日志相关的 grok 模式定义日志数据的结构:

syslogtimestamp
% {MONTH} +% {MONTHDAY} % {TIME} prog (?:[ \w._/ %-]+)
SYSLOGPROG
%{PROG:program}(?:\[%{POSINT:pid}\])?
SYSLOGHOST
%{IPORHOST}
系统日志功能
<%{NONNEGINT:facility}.%{NONNEGINT:priority}>
SYSLOGBASE
%{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:
HTTPDATE
%{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT}
QS
%{QUOTEDSTRING}
commonapachelog
%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-)
combinedapachelog
%{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}
LOGLEVEL

([Aa]lert|ALERT|[Tt]race|TRACE|[Dd]ebug|DEBUG|[Nn]otice|NOTICE|[Ii]nfo|INFO|[Ww]arn?(?:ing)?|WARN?(?:ING)?|[Ee]rr?(? :or)?|ERR?(?:OR)?|[Cc]rit?(?:ical)?|CRIT?(?:ICAL)?|[Cc]rit?(?:ical)?|CRIT?(?:ICAL)?|[Ff]atal|FATAL|[Ss]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ENCY)?

摸索网络模式

您可以使用以下与网络相关的 grok 模式定义日志数据的结构:

MAC
(?:%{CISCOMAC}|%{WINDOWSMAC}|%{COMMONMAC})
CISCOMAC
(?:(?:[A-Fa-f0-9]{4}\.){2}[A-Fa-f0-9]{4})
共同市场
(?:(?:[A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2})
WINDOWSMAC
(?:(?:[A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2})
主机
%{HOSTNAME}
主机名
\b(?:[ 0-9A-Za-z ][ 0-9A-Za-z- ] {0,62} )(?:\.(?:[ 0-9A-Za-z ][ 0-9A-Za-z- ] {0,62} ))*(\.?|\b)
主机:端口
%{IPORHOST}:%{POSINT}
IPORHOST
(?:%{HOSTNAME}|%{IP})
IP
(?:%{IPV6}|%{IPV4})
IPV6
((([ 0-9A-Fa-f ] {1,4} :) {7} ([ 0-9A-Fa-f ] {1,4} |:))|(([ 0-9A-Fa-f ] {1,4} :) {6} (:[ 0-9A-Fa-f ] {1,4} |((25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)(\.(25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)) {3} )|:))|(([ 0-9A-Fa-f ] {1,4} :) {5} (((:[ 0-9A-Fa-f ] {1,4} ) {1,2} )|:((25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)(\.(25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)) )|:))|(([ ] :) (((:[ ] ) )|(:[ ] )?\d)) {3} )|:))|(([ 0-9A-Fa-f ] {1,4} :) {4} (((:[ 0-9A-Fa-f ] {1,4} ) {1,3} )|((:[ 0-9A-Fa-f ] {1,4} )?:((25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)(\.(25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)) {3} ))|:))|(([ 0-9A-Fa-f ] {1,4} :) {3} (((:[ 0-9A-Fa-f ] {1,4} ) {1,4} )|((:[ 0-9A-Fa-f ] {1,4} ) {0,2} :((25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)(\.(25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)) {3} ))|:))|(([ 0-9A-Fa-f ] {1,4} :) {2} (((:[ 0-9A-Fa-f ] {1,4} ) {1,5} )|((:[ 0-9A-Fa-f ] {1,4} ) {0,3} :((25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)(\.(25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)) {3} ))|:))|(([ 0-9A-Fa-f ] {1,4} :) {1} (((:[ 0-9A-Fa-f ] {1,4} ) {1,6} )|((:[ 0-9A-Fa-f ] {1,4} ) {0,4} :((25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)(\.(25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)) {3} ))|:))|(:((:[ 0-9A-Fa-f ] {1,4} ) {1,7} )|((:[ 0-9A-Fa-f ] {1,4} ) {0,5} :((25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)(\.(25[0-5]|2[ 0-4]\d|1\d\d|[1-9 ]?\d)) {3} ))|:))(%.+)? IPV4 (?<![0-9])(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9] {1,2} )[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9] {1,2} )[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9] {1,2} )[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9] {1,2} ))(?![0-9])

路径摸索模式

您可以使用以下路径 grok 模式定义日志数据的结构:

路径
(?:%{UNIXPATH}|%{WINPATH})
UNIX路径
(?>/(?>[\w_%!$@:.,~-]+|\.)*)+ TTY (?: /dev/(pts|tty([pq])?)(\w+)?/?(?:[0-9]+)))
WINPATH
(?>[A-Za-z]+:|\\)(?:\\[^\\?*]*)+URIPROTO [A-Za-z]+(\+[A-Za-z+]+)?
URIHOST
%{IPORHOST}(?::%{POSINT:port})?
URIPATH
(?:/[ A-Za-z0-9$.+!*'(){},~:;=@#%_\-]*)+ #uriparam \?(?:[ A-Za-z0-9 ]+(?:=(?:[^&]*))?(?:&(?:[ A-Za-z0-9 ]+(?:=(?:[^&]*))?)*)?
URIPARAM
\?[A-Za-z0-9$.+!*'|(){},~@#%&/=:;_?\-\[\]]*
URIPATHPARAM
%{URIPATH}(?:%{URIPARAM})?
URI
%{URIPROTO}://(?:%{USER}(?::[^@]*)?@)?(?:%{URIHOST})?(?:%{URIPATHPARAM})?