这是我的格鲁克模式
2017-09-25 08:58:17,861 p = 14774 u = ec2-user | 14774 1506329897.86160:检查any_errors_fatal
我正在尝试阅读用户,但它只给出了ec2,它没有给出完整的单词
抱歉,我对grok过滤器更新
我目前的模式:
%{TIMESTAMP_ISO8601:timestamp} p =%{WORD:process_id} u =%{WORD:user_id}
当前输出:
...
...
...
"process_id": [
[
"14774"
]
],
"user_id": [
[
"ec2"
]
]
}
答案 0 :(得分:4)
WORD定义为"\b\w+\b"
请参阅https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns
\ b是单词边界
\ w匹配单个字母数字字符(字母字符或十进制数字)或" _"
+表示前一个字符的任意数量。所以\ w +表示任意数量的字符
请注意\ w不匹配 -
所以要使它工作而不是WORD使用
(?<user_id>\b[\w\-]+\b)
这不使用预定义的grok模式,而是&#34; raw&#34;正则表达式
\-
表示字面符号答案 1 :(得分:0)
输入允许1-2:成功
Grok过滤器(?:%{GREEDYDATA:Output}?|-)
结果 {“ Output”:[[“ Allow1-2:Success”]]}