2015-03-19 131 views
4

我嘗試使用logstash和grok解析Check Point防火牆系統日誌日誌。日誌條目的雖然Grok Debugger不會引發錯誤,但獲取Logstash _grokparsefailure

例子:

<190>2015 Mar 19 12:40:55 fw1 <60031> User admin failed to login (wrong authentication) (Source IP:123.123.123.123 Via:HTTP) 

我用這個模式:

<%{POSINT:syslog_pri}>%{YEAR} %{SYSLOGTIMESTAMP:syslog_timestamp} %{DATA:device} <%{POSINT:status}> User %{WORD:account} %{DATA:msg} (?:[(])%{DATA:msg1}(?:[)]) (?:[(])Source IP:%{IPV4:src} Via:%{WORD:protocol}(?:[)]) 

所有字段進行解析以及和elasticsearch/kibana露面。 Grok Debugger適用於特定的日誌/模式組合。但是,我一直收到_grokparsefailure標籤。有沒有人提示如何擺脫它們?

更新:這是我的完整logstash配置(最相關的部分是「登錄失敗」塊):

input { 
    syslog { 
     type => "syslog" 
     port => 514 
    } 
} 

filter { 
    if [type] == "syslog" { 
     geoip { source => "host" } 

     # Firewall rule fired 
     if [message] =~ "packet" { 
      grok { 
       match => [ "message", "<%{POSINT:syslog_pri}>%{YEAR} %{SYSLOGTIMESTAMP:syslog_timestamp} %{DATA:device} <%{POSINT:status}> %{WORD:activity} %{DATA:inout} (?:[(])%{DATA:msg}(?:[)]) Src:%{IPV4:src} SPort:%{POSINT:sport} Dst:%{IPV4:dst} DPort:%{POSINT:dport} IPP:%{POSINT:ipp} Rule:%{INT:rule} Interface:%{WORD:iface}" ] 
      } 
     } 
     # Failed login 
     else if [message] =~ "failed" { 
      grok { 
       match => [ "message", "<%{POSINT:syslog_pri}>%{YEAR} %{SYSLOGTIMESTAMP:syslog_timestamp} %{DATA:device} <%{POSINT:status}> User %{WORD:account} %{DATA:msg} (?:[(])%{DATA:msg1}(?:[)]) (?:[(])Source IP:%{IPV4:src} Via:%{WORD:protocol}(?:[)])" ] 
      } 
     } 
     # Successful login/out 
     else if [message] =~ "logged" { 
      mutate { 
       add_field => [ "userlogged", "%{host}" ] 
      } 
      grok { 
       match => [ "message", "<%{POSINT:syslog_pri}>%{YEAR} %{SYSLOGTIMESTAMP:syslog_timestamp} %{DATA:device} <%{POSINT:status}> User %{DATA:account} %{WORD} %{WORD:action} (?:[(])Source IP:%{IPV4:src} Via:%{WORD:protocol}(?:[)])" ] 
      } 
     } 
     else { 
      grok { 
       match => [ "message", "<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" ] 
      } 
     } 
    } 
} 

output { 
    elasticsearch { 
     host => "localhost" 
     protocol => "http" 
    } 
} 
+1

適合我。請顯示您的所有Logstash配置。 – 2015-03-19 12:56:41

回答

1

看來,_grokparsefailure由輸入插件「系統日誌」,它內部還採用甩神交。更換輸入塊後

input { 
    tcp { 
     port => 514 
     type => syslog 
    } 
    udp { 
     port => 514 
     type => syslog 
    } 
} 

我不再接收失敗消息。 This blog post幫了我不少。

1

我得到這個錯誤,因爲我的filter塊在我的input塊之前被聲明。