Ruby Logstash正则表达式模式问题
我有一个纯文本示例:Ruby Logstash正则表达式模式问题,ruby,regex,logstash,logstash-grok,oniguruma,Ruby,Regex,Logstash,Logstash Grok,Oniguruma,我有一个纯文本示例: ..done, Total time: 10, Errors: 5, there is some text here Results:, , Total time: 10, Errors: 5, , [INFO]... 我正在尝试使用以下模式分析Logstashgrok过滤器中总时间和错误字段的值: grok { match => {"message" => ".*Total\stime\:\s(?<time>\d
..done, Total time: 10, Errors: 5, there is some text here Results:, , Total time: 10, Errors: 5, , [INFO]...
我正在尝试使用以下模式分析Logstashgrok
过滤器中总时间
和错误
字段的值:
grok {
match => {"message" => ".*Total\stime\:\s(?<time>\d*).*Errors\:\s(?<errors>\d*)"}
}
grok{
match=>{“message”=>“*Total\stime\:\s(?\d*).*Errors\:\s(?\d*)”}
}
但它为每个字段指定两个值:
总时间10,10
错误5、5
只有一个值,有没有办法正确解析这些字段的值?我记得有人有类似的问题。检查1)您的输入是否在一行上,并且
总时间和错误:
只出现一次(否则,尝试将*
替换为[\s\s]
或[\\s\\s]
,不确定反斜杠的数量),2)尝试在elasticsearch中删除现有管道,然后重试。我也会使用*Total\s+时间:\s*(?\d+).*错误:\s*(?\d+)
模式。@WiktorStribiżew谢谢。我尝试了此模式*总计\s+时间:\s*(?\d+).*错误:\s*(?\d+)
,但它再次创建了两个值。我还尝试了[\s\s]总计\s+时间:\s*(?\d+)[\s\s]错误:\s*(?\d+)
,但失败了,尽管它被传递了。您还有其他建议吗?我实际上是指[\s\s]*
,而不是[\s\s]
。不过,我相信管道或输入存在一些问题。