Logstash grok自定义模式不生成字段

Logstash grok自定义模式不生成字段,logstash,Logstash,新手警报 我有以下grok过滤器: filter { grok { match => [ "message","%{DATESTAMP:timestamp}" ] match => [ "message", "(?<number_after_timestamp>[0-9]{8}\s\w+)"] match => [ "message",

新手警报

我有以下grok过滤器:

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。这对我来说很有意义。非常感谢。