Logstash:如何链接到以前日志消息中的时间戳



我想创建一个像这样的grok模式

********************************************************
18.03.13, 10:14:25: Starting new session 
********************************************************
 12:43:38   Warning: X-Ray blocked because signal  XRAY_ENABLE_FPD is high.
 13:31:08   Error 770.999 (DigitizerPt1000Pixium): 
OffsetCalibration: mode not active
 13:31:21   Error 770.999 (DigitizerPt1000Pixium): 
Cannot stop grabbing
然而

13:31:08    Error 770.999 (DigitizerPt1000Pixium): 
OffsetCalibration: mode not active

这是一个日志条目,而不是两个(grok将其视为两个不同的条目)有没有任何图案在grok或任何其他过滤器,我可以使用?

我还想将第一行给出的日期与警告和错误日志条目相关联

注意:我已经为它创建了grok模式,只有以下问题没有解决。

我已经尝试使用以下代码(对于这里给出的整个日志文件)。但是我无法将第一行的日期与错误和警告条目

联系起来。
input {
    file {
        path => "E:Softwareslogstash-1.5.4binError_log_29092015.txt"
        start_position => beginning
        sincedb_path => "E:/sincedb"
    }
}
filter {
    multiline {
       pattern => "^%{NOTSPACE}"
       what => previous
    }
        if "Starting" in [message]{
            grok {
                match => [ "message", "%{DATE_EU:Start_date}, %{TIME:Start_time}: %{WORD:session_status}"]          
                }
            }
        else if "Terminating" in [message] {
            grok{
              match => [ "message", "%{DATE_EU:Terminate_date}, %{TIME:Terminate_time}: %{WORD:session_status}"]
            }
        }
        else if "Warning" in [message] {
                                grok {
                                     match => [ "message", "%{TIME:Warning_time} t%{WORD:Indicator}: %{GREEDYDATA:Warning_Message}r"]     
                                    }
                            }
        else if "Error" in [message] { 
                        if "Generator" in [message]{
                            grok{
                            match => ["message","%{TIME:Error_time} t%{WORD:Indicator} G %{NOTSPACE:Error_Num} %{NOTSPACE:Error_Type}: rn%{GREEDYDATA:Error_Message}r"]
                            }
                        }
                        else{
                                grok {
                                     match => [ "message", "%{TIME:Error_time} t%{WORD:Indicator} %{NOTSPACE:Error_Num} %{NOTSPACE:Error_Type}: rn%{GREEDYDATA:Error_Message}r"]
                                    }
                                }
                            }   
        else if "Invalid" in [message]{
            grok {
                 match => [ "message", "%{TIME:InvalidCode_time} t%{WORD:Type} Code. %{GREEDYDATA:InvalidCode_Message}"]
                }
            }   

        else if "Sedecal" in [message]{
            grok {
                 match => [ "message", "%{TIME:Sedecal_time} t%{GREEDYDATA:Type}: %{GREEDYDATA:InvalidCode_Message}"]
                }
            }   
        else if "UIMS" in [message]{
            grok {
                 match => [ "message", "%{TIME:UIMSInternalState_time} t%{GREEDYDATA:Type}: %{GREEDYDATA:UIMSInternalState_Message}"]
                }
            }       
        else {
            drop{}
        }                   
}
output {
    stdout{ codec => rubydebug}
    elasticsearch{
    cluster => "My_ProjectC"
        host => localhost
        codec => rubydebug} 
}

你可以使用多行插件

input {
        stdin {
        }
}
filter{
        multiline{
                pattern => "^%{TIME}"
                negate => "true"
                what => "previous"
        }
}
output {
  stdout{codec => "rubydebug"}
}

所有不以TIME开头的日志将被合并到前一个日志行。

合并多行日志后,您可以使用grok来过滤您想要的字段

您需要的不是合并,而是记忆 logstash过滤器插件。它让您记住以前日志消息中的日期和时间,以便稍后将其添加为字段。已经有一个SO线程显示了它的基本用途。

记忆插件不再显示在当前过滤器插件列表中,但它应该仍然可以在logstash 2中使用

相关内容

  • 没有找到相关文章

最新更新