了解模式
定义摸索模式
您可以使用本附录中的 grok 模式定义日志数据的结构。
您可以使用单个模式,也可以将多个模式组合起来定义一个更大的模式,还可以创建自定义模式。
在数据收集器阶段定义摸索模式时,需要配置以下属性:
- Grok 模式定义
- 用于定义复杂或自定义的摸索模式。 您可以使用此属性为单个图案定义图案,也可以定义多个图案,以便在更大的图案中使用。
- Grok 模式
- 定义用于评估数据的实际 grok 模式。 您可以输入预定义的摸索模式,如
%{COMMONAPACHELOG}。 或者,您也可以使用本附录中列出的模式或在 "Grok 模式描述 "属性中定义的模式来定义自定义 grok 模式。
下图显示了用户界面中的配置示例:

一般摸索模式
您可以使用以下通用 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})?