Logstash grok自定义模式不生成字段
新手警报 我有以下grok过滤器:Logstash grok自定义模式不生成字段,logstash,Logstash,新手警报 我有以下grok过滤器: filter { grok { match => [ "message","%{DATESTAMP:timestamp}" ] match => [ "message", "(?<number_after_timestamp>[0-9]{8}\s\w+)"] match => [ "message",
filter {
grok {
match => [ "message","%{DATESTAMP:timestamp}" ]
match => [ "message", "(?<number_after_timestamp>[0-9]{8}\s\w+)"]
match => [ "message", "(?<error_or_debug>(ERROR|DEBUG))"]
match => [ "message", "(?<first_part>ORB\.thread\.pool.*(?=\s{2}))" ]
match => [ "message", "(?<exception_class_name>(?<=\<Exception class name\=\s).*?\>)" ]
match => [ "message", "(?<exception_message>(?<=\<Exception message\=).*?(?=\>))" ]
}
}
但是当运行logstash命令行->而不是香肠中的数据时
非常感谢您的帮助
谢谢
日志文件如下所示:
[30/09/14 23:07:15:195 BST] 00000043 SystemOut O ERROR 32109 Tue Sep 30 23:07:15 BST 2014 ORB.thread.pool : 2 webuser com.ultra.bd.services.UltraticoCustomerService.processRequest API getPerson <Exception class name= com.Ultratico.bd.exceptions.UCOException> <Exception message= e05CX432182S> <UCOException Error = 32109>
[30/09/14 23:07:15:200 BST] 00000043 SystemOut O ERROR 32109 Tue Sep 30 23:07:15 BST 2014 ORB.thread.pool : 2 webuser com.Ultratico.ecrm.framework.sessionHandler.UltraticoSessionHandler.execute <Exception class name= com.Ultratico.bd.exceptions.UCOException> <Exception message= e05CX432182S> <UCOException Error = 32109>
的语法为match=>[field,pattern1,pattern2,pattern3,…,patternN]。多个匹配参数将不起作用,因为它会将它们加载到哈希中,导致它只使用最后一个
您需要创建多个grok块,每个块都带有break\u on\u match=>false,才能按照显示的方式执行,但是如果您使用第一个表单并使用完整的模式来匹配整行,则会更好,这样您就可以避免不可避免的grokparsefailure。is match的语法=>[field,pattern1,pattern2,pattern3,…,patternN]。多个匹配参数将不起作用,因为它将这些参数加载到哈希中,导致它仅使用最后一个参数
您需要创建多个grok块,每个块都带有break_on_match=>false,才能按照显示的方式执行,但如果您使用第一个表单并使用完整的模式匹配整行,则会更好,这样您就可以避免不可避免的“grokparsefailure”。查看输入,我尝试解析它的方式是使用单个matc在logstash中,我使用多个匹配模式作为解析不同类型日志项的方法 匹配模式1=>否 匹配模式2=>是 匹配模式3=>否 因此,对于您的示例,我会做如下操作:
filter {
grok {
break_on_match => false
match => [ "message", "%{SYSLOG5424SD:timestamp} %{NUMBER:number_after_timestamp} (?<forget1>.*) (?<error_or_debug>ERROR|DEBUG) %{NUMBER:process_id} (?<timestamp_2>.{7} \d{2} \d{2}:\d{2}:\d{2} \w{3} \d{4}) %{JAVACLASS:origin} : (?<first_part>.*) %{JAVACLASS:exception_class_name} (?<exception_message>.*)" ]
match => [ "message", "..some other pattern you want to extract.." ]
match => [ "message", "..some other pattern you want to extract.." ]
}
}
可以整理一下,但你得到了要点。查看输入,我尝试解析它的方式是使用单个匹配表达式。在logstash中,我使用多个匹配模式作为解析不同类型日志项的方式。例如 匹配模式1=>否 匹配模式2=>是 匹配模式3=>否 因此,对于您的示例,我会做如下操作:
filter {
grok {
break_on_match => false
match => [ "message", "%{SYSLOG5424SD:timestamp} %{NUMBER:number_after_timestamp} (?<forget1>.*) (?<error_or_debug>ERROR|DEBUG) %{NUMBER:process_id} (?<timestamp_2>.{7} \d{2} \d{2}:\d{2}:\d{2} \w{3} \d{4}) %{JAVACLASS:origin} : (?<first_part>.*) %{JAVACLASS:exception_class_name} (?<exception_message>.*)" ]
match => [ "message", "..some other pattern you want to extract.." ]
match => [ "message", "..some other pattern you want to extract.." ]
}
}
可以整理一下,但你明白要点了。你能从输入日志文件等中添加几行吗?OP编辑以显示示例日志行可能的重复我发现gro调试器在我无法确定我的grok筛选器不工作的情况下非常有用:你能从输入日志文件等中添加几行吗?OP编辑以显示示例日志行可能重复的我发现gro调试器在我无法确定我的grok筛选器为何不工作的情况下非常有用:是的,就是这样。谢谢。当我拆分grok语句时,我现在看到了所有字段。非常感谢。我会研究你的建议。谢谢。Logstash感觉很难接受工作…是的。就是这样。谢谢。当我把Grok的陈述分开时,我现在看到了所有的领域。非常感谢。我会研究你的建议。谢谢。Logstash觉得很难工作…谢谢Andrew。这对我来说很有意义。非常感谢。谢谢Andrew。这对我来说很有意义。非常感谢。