我必须从由这样的行组成的日志中提取值:
<38>1 [2017-03-15T08:45:23.168Z] apache.01.mysite.com event=login;src_ip=xxx.xxx.xxx.xxx\, xxx.xxx.xxx.xxx\, xxx.xxx.xxx.xxx;site=FE-B1-Site;cstnr=1454528;user=498119;result=SUCCESS
例如,使用%{IP:source} 我只获得了第一个IP,但有时我有3个IP地址。 我如何提取所有IP,'cstnr','结果'和'用户'?
答案 0 :(得分:1)
看起来你有一个嵌套的,分隔的键值格式。第一个分隔符为;
,每个分隔符为key=value
。此外,这些值在,
&#39;上分隔。你有足够的grok来获得第一个IP地址,但我建议做一些不同的事情:
grok
获取站点名称后面的整个字符串。kv
过滤器与field_split => ';'
一起使用,这会创建与您的密钥相同的字段。csv
过滤阶段中捕获的src_ip
地址上使用kv
过滤器。
columns => [ cstnr', 'result', 'user' ]
获取正确名称的字段。