2015-04-14 94 views
0

我一直在試圖爲logstash創建一些自定義grok模式。他們大多數工作正常,但有一個讓我難住。該模式是:logstash grok篩選器模式未找到

WINUSER (?<=User:\s)\w+ 

這裏是正在搜索的數據樣本:

2015-04-14 14:06:18 exchange.ows1.osborneit.com INFO 1149 NT AUTHORITY\NETWORK SERVICE Remote Desktop Services: User authentication succeeded: 

User: administrator 
Domain: . 
Source Network Address: 172.24.1.32 

我已經在http://grokconstructor.appspot.com/do/match測試這和它工作正常,但logstash似乎忽略它。我似乎無法弄清楚我做錯了什麼。

下面是我的logstash配置:

input { 
    udp { 
     type => "eventlog" 
     codec => json 
     port => 5140 
    tags => ['windows', 'eventlog'] 
    } 
} 
filter { 
    if [type] == "eventlog" { 
    grok { 
    match => [ 
    "message", "%{IP:client}", 
    "message", "%{WINUSER:username}" 
    ] 
    } 
} 
} 
output { 
    elasticsearch { host => localhost } 
    stdout { codec => json } 
} 

更新:看來,這個問題是不是與模式,但隨着比賽的順序。如果我將WINUSER匹配移動到IP匹配上方,它將起作用,但IP匹配不會。不知道爲什麼兩者不匹配。

回答

0

事實證明,問題出在配置文件的過濾器部分。我不得不將grok比賽分成多行,如下所示。

filter { 
    if [type] == "eventlog" { 
    grok { 
    match => [ "message", "%{IPV4:client}" ] 
    } 
    grok { 
    match => [ "message", "%{WINUSER:username}" ] 
    } 
} 
}