我是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过滤器帮助我。我知道我错过了一些可能很简单的东西。
答案 0 :(得分:2)
您可以使用两种模式,添加另一种模式,当有4个字段时匹配:
%{WORD:lastname}.%{WORD:firstname}.%{WORD:middle}.%{WORD:suffix}.%{WORD:id}
但在这种情况下,你正在创建听起来甚至不想要的字段。
分割ID的模式怎么样,将所有内容都留在它前面,或许:
%{DATA:name}.%{INT}