2017-04-07 29 views
0

我解析了一組日誌,其中一個字段給我提供了一些問題。 格式是用Grok捕捉逗號分隔的圖案

報頭(IP,日期等)字段1 =數據,FIELD2 =數據,字段3 =數據,字段4 =數據 我有讀像

match => [ "message","%{DATA:..header..} %{DATA}=%{DATA:service},%{DATA}=%{DATA:roles}],%{DATA}=%{DATA:macaddress},%{DATA}=%{DATA:nasip}"] 

有些時候一般解析器「角色」字段的「值」部分看起來像 值,[Admin]。這是由以%{DATA} =%處理{DATA:角色}], 但在其他情況下,我得到

subvalue1, subvalue2, subvalue3, 

subvalue1, subvalue2, subvalue3, subvalue4, 

subvalue1, subvalue2, 

解析器只捕獲subval1。正如你所看到的那樣,有不同數量的sub vals,並且在失蹤時很難捕捉到。

這裏是什麼樣的記錄生成問題的一個例子:

local1--debug--10.47.130.2--2017-03-24--2017-03-24T11:29:51-‌​04:00--11:29:51,545 10.241.186.253 ZTP0 SESSION 20 1 0 Common.Username=LABF5CHK,Common.Service=F5_HealthCHK,Common.‌​Roles=Employee, [User Authenticated],Common.NAS-IP-Address=xxxxxxxxxxxx,Common.Req‌​uest-Timestamp=2017-‌​03-24 11:27:56-04 

是否有變通方法嗎?

+0

如果您提供一些日誌示例,我可以改進我的答案 –

回答

1

對於可變長度的逗號分隔數據,我建議將整個值集合捕獲爲一個字段,然後使用csv filter解析該字段。

對於解析一組鍵=值對,我建議使用kv filter

那麼你的配置將工作是這樣的

filter { 
    grok { 
    match => [ "message","%{DATA:..header..} %{GREEDYDATA:kv_pairs}"] 
    } 
    kv { 
    source => "kv_pairs" 
    field_split => "," 
    } 
    csv { 
    # assumes that the key was 'roles' 
    source => "roles" 
    target => "role_list" 
    } 
} 

我不知道你的日誌消息的確切格式的,但對KV過濾器,如果你的郵件有一個格式,它沒有按」可能會搞砸T中的子值CSV名單給K = v對這樣的名單分開:

...,key=value,roles=subval1,subval2,subval3,key2=value2... 

或打開列表與[,但不會關閉它。

編輯:它看起來好像是第一個打破案件實際上是你面臨的。

如果角色的部分總是在同一個地方,其次是同一個鍵,你可以使用

...Common.‌​Roles=%{DATA:roles},Common.NAS-IP-Address=%{DATA:nasip}... 

匹配,如果這些KV對是consitently以相同的配置,使用這種模式應該工作。如果一個字段完全一致或可以通過比.*?更具體的正則表達式匹配,則應該使用該字段,因此請使用實際的鍵名稱/模式而不是%{DATA}=,因爲這很容易引起不匹配。

+0

local1 - debug - 10.47.130.2--2017-03-24--2017-03-24T11:29:51-04:00--11 :29:51,545 10.241.186.253 ZTP0 SESSION 20 1 0 Common.Username = LABF5CHK,Common.Service = F5_HealthCHK,Common.Roles = Employee,[用戶已認證],Common。NAS-IP-Address = xxxxxxxxxxxx,Common.Request-Timestamp = 2017-03-24 11:27:56-04 – ScipioAfricanus

+0

這是一個示例日誌行...看到我的問題?不能真的使用csv過濾器,我不認爲。 – ScipioAfricanus

+0

是的,我可以看到爲什麼這個問題真的讓你感到困擾 –