2015-09-29 123 views
1

我正在解析IIS日誌,當所有模式都在配置文件中時,我有一切工作。logstash/grok模式文件

我想拿出所有的模式,並把它們放入一個模式文件,但似乎無法讓它工作。

我有什麼: 日誌例如:

2015-09-08 16點02分23秒GET/l8Wc2pt1FMvzsCEJ /測試/ restapiname

2015-09-08 16點02分24秒GET/l8Wc2pt1FMvzsCEJ /測試/ ifSoap/soapapiname 神交它的工作原理:

match => { "message" => [ 
     "%{TIMESTAMP_ISO8601:log_timestamp} %{WORD:method} \/%{WORD:orgid}\/(?i)test\/%{GREEDYDATA:restapiname}", 
     "%{TIMESTAMP_ISO8601:log_timestamp} %{WORD:method} \/%{WORD:orgid}\/(?i)test\/(?i)ifsoap\/%{GREEDYDATA:soapapiname}" 

這工作。但是我有太多的這個URL的組合,並且想要把它放在一個文件中,所以我只需要維護1個文件。

這似乎並不工作

模式文件:

IISLOGS %{TIMESTAMP_ISO8601:log_timestamp} %{WORD:method} \/%{WORD:orgid}\/(?i)test\/%{GREEDYDATA:restapiname} 
IISLOGS %{TIMESTAMP_ISO8601:log_timestamp} %{WORD:method} \/%{WORD:orgid}\/(?i)test\/(?i)ifsoap\/%{GREEDYDATA:soapapiname}" 

神交文件:

grok {  
    patterns_dir => "C:/LogProject/LogStash/patterns" 
    match => [ "message", "IISLOGS" ] 
    } 

有什麼建議?

回答

0

我個人建議留在logstash配置中的模式。在我看來,額外的模式文件很煩人,難以維護。但是,如果你想使用模式文件出於某種原因,這裏有一個可能的方法:

問題是你在Grok模式文件中有IISLOGS兩個不同的定義。您可以將不同的路徑格式分割爲多種模式,並在IISLOGS定義中使用(?:%{IISPATH1}|%{IISPATH2})執行邏輯

模式文件:

IISPATH1 \/%{WORD:orgid}\/(?i)test\/(?i)ifsoap\/%{GREEDYDATA:soapapiname} 
IISPATH2 \/%{WORD:orgid}\/(?i)test\/%{GREEDYDATA:restapiname} 
IISLOGS %{TIMESTAMP_ISO8601:log_timestamp} %{WORD:method} (?:%{IISPATH1}|%{IISPATH2}) 

這個作品在神交調試器爲您給出的實例。第一結果在​​,第二結果在soapapiname: soapapiname

+0

Thanks Hurb。這工作。模式文件只是簡單的簿記。當我嘗試編輯任何東西時,真正的大配置文件變得非常複雜。 – Dhrumil