Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logstash阅读新行问题_Logstash - Fatal编程技术网

Logstash阅读新行问题

Logstash阅读新行问题,logstash,Logstash,我已经在logstash中编写了一个conf文件来读取jms日志,问题是我无法在过滤之前将记录分解成新行。这是原始数据 ####<Sep 20, 2015 12:00:12 AM> <> <1442678412960> <809000> <ID:<307061.1442678412716.0>> <> <CmsCorpAlsPrd_als_mod!CmsCorpAlsPrd_jmsAls_cdceap7e_

我已经在logstash中编写了一个conf文件来读取jms日志,问题是我无法在过滤之前将记录分解成新行。这是原始数据

####<Sep 20, 2015 12:00:12 AM> <> <1442678412960> <809000> <ID:<307061.1442678412716.0>> <> <CmsCorpAlsPrd_als_mod!CmsCorpAlsPrd_jmsAls_cdceap7e_32040@abb_audit_als_dQue> <Consumed> <<anonymous>> <MC:CA(local):OAMI(CmsCorpAlsPrd_cdceap7e_32040.jms.connection36.session121.consumer125)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSDeliveryMode&gt;PERSISTENT&lt;/mes:JMSDeliveryMode&gt;&lt;mes:JMSExpiration&gt;0&lt;> <> ####<Sep 20, 2015 12:00:13 AM> <> <1442678413018> <392000> <ID:<307061.1442678412943.0>> <> <CmsCorpAlsPrd_als_mod!CmsCorpAlsPrd_jmsAls_cdceap7e_32040@abb_audit_als_dQue> <Produced> <<anonymous>> <> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSDeliveryMode&gt;PERSISTENT&lt;/mes:JMSDeliveryMode&gt;&lt;mes:JMSExpiration&gt;0&lt;> <> 
#########
这是我在logstash中的conf文件

input{
    stdin{}
    file{
        type => "txt"
        path => "C:\HA\jms\jms.log"
        start_position => "beginning"
    }
}
filter{
    multiline{
        pattern => "\&"
        what => previous
    }   
    grok{
    match => {"message" => ['####<%{GREEDYDATA:Date}>%{SPACE}<>%{SPACE}<%{GREEDYDATA:Millisec_Date}>%{SPACE}<%{GREEDYDATA:Nanosec_Date}>%{SPACE}<ID:<%{GREEDYDATA:JMS_message_ID}>>%{SPACE}<>%{SPACE}<%{GREEDYDATA:JMS_destination_name}>%{SPACE}<%{GREEDYDATA:JMS_message_eventname}>%{SPACE}<<%{GREEDYDATA:JMS_username}>>%{SPACE}<%{GREEDYDATA:JMS_correlationID}>%{SPACE}<%{GREEDYDATA:Mcls}:JMSDeliveryMode&gt;%{WORD:JMSDeliveryMode}&lt;/mes:JMSDeliveryMode&gt;&lt;mes:JMSExpiration&gt;%{NUMBER:JMSExpiration}&lt;>%{SPACE}<>']}
        }
}
output{
    elasticsearch { hosts => ["localhost:9200"] 
    }
    stdout { codec => rubydebug }   
}
输入{
stdin{}
文件{
类型=>“txt”
path=>“C:\HA\jms\jms.log”
开始位置=>“开始”
}
}
滤器{
多行{
模式=>“\&”
什么=>以前的
}   
格罗克{
match=>{“message”=>['####%{SPACE}%{SPACE}%{SPACE}%{SPACE}%{SPACE}%{SPACE}%{SPACE}%{SPACE}%{SPACE}%{SPACE}%{SPACE}%{SPACE}%{SPACE SPACE}%{SPACE}]}
}
}
输出{
elasticsearch{hosts=>[“localhost:9200”]
}
stdout{codec=>rubydebug}
}
除了运行conf,所有的事情都进行得很顺利,结果显示

                 "@version" => "1",
               "@timestamp" => "2016-06-08T06:23:50.543Z",
                     "path" => "C:\\HA\\jms\\jms.log",
                     "host" => "WIN-07LLQEN2SJB",
                     "type" => "txt",
                     "tags" => [
        [0] "multiline"
    ],
                     "Date" => "Sep 20, 2015 12:00:12 AM> <> <1442678412960> <809000> <ID:<307061.1
442678412716.0>> <> <CmsCorpAlsPrd_als_mod!CmsCorpAlsPrd_jmsAls_cdceap7e_32040@abb_audit_als_dQue> <Consumed> <<anonymou
s>> <MC:CA(local):OAMI(CmsCorpAlsPrd_cdceap7e_32040.jms.connection36.session121.consumer125)> <&lt;?xml version=\"1.0\"
encoding=\"UTF-8\"?&gt;\n&lt;mes:WLJMSMessage xmlns:mes=\"http://www.bea.com/WLS/JMS/Message\"&gt;&lt;mes:Header&gt;&lt;
mes:JMSDeliveryMode&gt;PERSISTENT&lt;/mes:JMSDeliveryMode&gt;&lt;mes:JMSExpiration&gt;0&lt;> <> \n####<
Sep 20, 2015 12:00:13 AM",
            "Millisec_Date" => "1442678413018",
             "Nanosec_Date" => "392000",
           "JMS_message_ID" => "307061.1442678412943.0",
     "JMS_destination_name" => "CmsCorpAlsPrd_als_mod!CmsCorpAlsPrd_jmsAls_cdceap7e_32040@abb_audit_als_dQue",
    "JMS_message_eventname" => "Produced",
             "JMS_username" => "anonymous",
                     "Mcls" => "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;mes:WLJMSMessage xmlns:mes=\"http:
//www.bea.com/WLS/JMS/Message\"&gt;&lt;mes:Header&gt;&lt;mes",
          "JMSDeliveryMode" => "PERSISTENT",
            "JMSExpiration" => "0"
}
“@version”=>“1”,
“@timestamp”=>“2016-06-08T06:23:50.543Z”,
“路径”=>“C:\\HA\\jms\\jms.log”,
“主机”=>“WIN-07LLQEN2SJB”,
“类型”=>“txt”,
“标签”=>[
[0]“多行”
],
“日期”=>“2015年9月20日12:00:12 AM>\n####<
2015年9月20日12:00:13上午“,
“毫秒日期”=>“1442678413018”,
“Nanosec_Date”=>“392000”,
“JMS_message_ID”=>“307061.1442678412943.0”,
“JMS_destination_name”=>“CmsCorpAlsPrd_als_mod!CmsCorpAlsPrd_jmsAls_cdceap7e_32040@abb_audit_als_dQue",
“JMS_message_eventname”=>“已生成”,
“JMS_用户名”=>“匿名”,
“Mcls”=>“?xml版本=\“1.0\”编码=\“UTF-8\”?\nmes:WLJMSMessage xmlns:mes=\”http:
//www.bea.com/WLS/JMS/Message \“mes:Headermes”,
“JMSDeliveryMode”=>“持久性”,
“JMSExpiration”=>“0”
}

显然,date has part已经读取了第一条消息中的所有数据,并且似乎将i分类为第二条消息的数据。在新行中打破不同记录时,是否有解决方法?

过了一段时间,我配置了两个帮助:

  • 不要使用GREEDYDATA来匹配日期。顾名思义,它是贪婪的。使用更具体的grok表达式
  • 更好的多行条件可能是“除非行以####<与前一行连接”开头”。如果坚持使用当前模式,则至少应在其前面加上“^”,使其仅与行首的“与”匹配

  • 一段时间后,我配置了两个帮助:

  • 不要使用GREEDYDATA来匹配日期。顾名思义,它是贪婪的。使用更具体的grok表达式
  • 更好的多行条件可能是“除非行以####<与前一行连接”开头”。如果坚持使用当前模式,则至少应在其前面加上“^”,使其仅与行首的“与”匹配