2014-02-12 63 views
8

我們想爲我們公司的幾個不同項目設置logstash服務器。現在我嘗試在Kibana中啓用它們。我的問題是: 如果我有不同的日誌文件模式,我如何爲他們構建一個過濾器? 例如:logstash.conf:logstash:具有不同模式的多個日誌文件

input { 
    file { 
    type => "A" 
    path => "/home/logstash/A/*" 
    start_position => "beginning" 
    } 
file { 
    type => "B" 
    path => "/home/logstash/B*" 
    start_position => "beginning" 
    } 
} 

filter { 
    multiline { 
     pattern => "^%{TIMESTAMP_ISO8601}" 
     negate => true 
     what => "previous" 
    } 
    grok { 
    type => A 
    match => [ "message", "%{TIMESTAMP_ISO8601:logdate} %{DATA:thread %{LOGLEVEL:level}\s*%{DATA:logger_name}\s*-\s*%{GREEDYDATA:log_text}"] 

    add_tag => [ "level_%{level}" ] 
    } 
    date { 
     match => ["logdate", "YYYY-MM-dd HH:mm:ss,SSS"] 
    } 
    grok { 
     type => B 
     match => [ any other pattern ... 
} 
} 
output { 
    elasticsearch { embedded => true } 
} 

我必須爲每一個項目(A,B,C,...)一個自己的過濾器,和我有什麼做的,當我有每個再次項目日誌文件的不同模式?

+0

謝謝本,我會試試看。當A和B是不同的日誌文件模式時,我應該怎麼做? – user3300940

回答

9

您只需要爲所有項目創建一個過濾器。

對於Logstash 1.3.3,您可以使用if語句來區分每個項目grok。例如,

filter { 

    multiline { 
     pattern => "^%{TIMESTAMP_ISO8601}" 
     negate => true 
     what => "previous" 
    } 

    if [type] == "A" { 
     grok { 
      match => [ any other pattern ... 
     } 
    } 
    else if [type] == "B" { 
     grok { 
      match => [ any other pattern ... 
     } 
    } 
} 

希望這可以幫助你。

+0

感謝Ben,我會試試看。當A和B是不同的日誌文件模式時,我應該怎麼做? – user3300940

+0

一個輸入(文件)將有一個類型。所以,如果你在A中有不同的日誌文件模式,你需要先分離日誌。 –

+0

感謝Ben.Now的理解:當我有兩種不同的Web服務(A和B)以及不同的日誌文件模式時,無法在一個Kibana GUI安裝中顯示它們。我需要爲每個Webservices提供一個自己的Kibana GUI,對吧?兩個儀表板在一個GUI中是不可能的? – user3300940

相關問題