在grok中削减可变长度点分隔的字符串

时间:2016-08-01 16:40:02

标签: logstash logstash-grok

我是logstash和grok过滤器的新手。我试图从Apache Access Log解析一个字符串,在logstash中使用grok过滤器,其中用户名是访问日志的一部分,格式如下:

name1.name2.name3.namex.id

我想构建一个名为USERNAME的新字段,其名称为name1.name2.name3.namex,其ID被剥离。我有它工作,但问题是名称的数量是可变的。有时有3个名字(lastname.firstname.middlename),有时候有4个名字(lastname.firstname.middlename.suffix - SMITH.GEORGE.ALLEN.JR

%{WORD:lastname}.%{WORD:firstname}.%{WORD:middle}.%{WORD:id}

当有4个或更多名称时,它无法正确解析。我希望有人可以用正确的grok过滤器帮助我。我知道我错过了一些可能很简单的东西。

1 个答案:

答案 0 :(得分:2)

您可以使用两种模式,添加另一种模式,当有4个字段时匹配:

%{WORD:lastname}.%{WORD:firstname}.%{WORD:middle}.%{WORD:suffix}.%{WORD:id}

但在这种情况下,你正在创建听起来甚至不想要的字段。

分割ID的模式怎么样,将所有内容都留在它前面,或许:

%{DATA:name}.%{INT}