2017-04-07 38 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

是的,我可以看到为什么这个问题真的让你感到困扰 –