Regular Expressions
Grok sits on top of regular expressions, so any regular expressions are valid in grok as well. The regular expression library is Oniguruma, and you can see the full supported regexp syntax on the Oniguruma site.
Groks 位于正则表达式之上,因此任何正则表达式在grok里也是有效的
正则表达式库是 Oniguruma
自定义模式
有时候logstash 没有你需要的模式, 你有一些选择:
首先,你可以使用 Oniguruma进行命名捕获,这将允许您
匹配一段文本并将其另存为字段:
(?<field_name>the pattern here)
例如,邮件系统日志有一个queue id 是一个10 或者11的16进制字符,我们可以捕获:
(?<time>%{YEAR}%{MONTHNUM}%{MONTHDAY}[- ]%{TIME})
(?<field_name>the pattern here)
filter {
grok {
match => { "message" => "\s*(?<field_name>\d+)" }
}
filter {
grok {
match => { "message" => "\s*(?<field_name>(?<queue_id>[0-9A-F]{10,11}))" }
}