elasticsearch 格罗克一个字也不读连字符
这是我的格洛克模式 2017-09-25 08:58:17861 p=14774 u=ec2用户124741506329897.86160:检查是否存在任何错误 我试图阅读用户,但它只给出ec2,没有给出完整的单词 对不起,我是grok过滤器的新手 我目前的模式: %{TIMESTAMP_ISO8601:TIMESTAMP}p=%{WORD:process_id}u=%{WORD:user_id} 电流输出:elasticsearch 格罗克一个字也不读连字符,elasticsearch,logstash,kibana,logstash-grok,elasticsearch,Logstash,Kibana,Logstash Grok,这是我的格洛克模式 2017-09-25 08:58:17861 p=14774 u=ec2用户124741506329897.86160:检查是否存在任何错误 我试图阅读用户,但它只给出ec2,没有给出完整的单词 对不起,我是grok过滤器的新手 我目前的模式: %{TIMESTAMP_ISO8601:TIMESTAMP}p=%{WORD:process_id}u=%{WORD:user_id} 电流输出: ... ... ... "process_id": [ [ "
...
...
...
"process_id": [
[
"14774"
]
],
"user_id": [
[
"ec2"
]
]
}
单词定义为“\b\w+\b”
看
- \b是一个词的边界
- \w匹配单个字母数字字符(字母字符或十进制数字)或“\u1”
- +表示前一个字符的任何数字。所以\w+表示任意数量的字符
(?<user_id>\b[\w\-]+\b)
(?\b[\w\-]+\b)
这不使用预定义的grok模式,而是使用“raw”regexp
- 使用(?..)代替%{,因为它是“原始”regexp
表示文字符号\-
- []表示字符类。因此[\w-]将匹配\w所做的所有事情和-以及
输入允许1-2:成功 Grok过滤器(?:%{GREEDYDATA:Output}?|-) 结果
{“输出”:[[“Allow1-2:Success”]}它正在工作。%{TIMESTAMP_ISO8601:TIMESTAMP}p=%{WORD:process_id}u=%{USERNAME:user_id}如果您使用用户名,维护您的代码的人可能会认为日志包含一个,嗯,用户名。按照Vorspringor所述创建您自己的模式,或者您可以像我没有读过的评论中那样使用用户名。欢迎使用Stack Overflow。虽然此代码可能会回答这个问题,但提供有关此代码的原因和/或方式的其他上下文回答了这个问题,提高了它的长期价值。