在正则表达式后面收集了Tail插件正面信息

时间:2018-07-19 00:00:44

标签: regex posix collectd

我正在尝试使用“ tail”插件来匹配文件中的特定值。我在另一篇文章中看到该插件仅支持POSIX ERE语法。下面的示例文件:

[18/Jul/2018:23:54:26.388 +0000] SEARCH RESULT instanceName="asdf" threadID=10 conn=1 op=123 msgID=124 requesterIP="asdf" requesterDN="cn=Directory Manager,cn=Root DNs,cn=config" base="cn=System Information,cn=monitor" scope=0 filter="(objectClass=*)" attrs="instanceRoot" resultCode=0 resultCodeName="Success" qtime=1 etime=0.494 preAuthZUsedPrivileges="bypass-acl" entriesReturned=1
[18/Jul/2018:23:54:26.391 +0000] SEARCH RESULT instanceName="asdf" threadID=8 conn=1 op=124 msgID=125 requesterIP="asdf" requesterDN="cn=Directory Manager,cn=Root DNs,cn=config" base="cn=Servers,cn=admin data" scope=0 filter="(objectClass=*)" attrs="1.1" resultCode=32 resultCodeName="No Such Entry" message="Entry cn=Servers,cn=admin data specified as the search base DN does not exist" matchedDN="cn=admin data" qtime=0 etime=0.059 entriesReturned=0

我想找到每个SEARCH操作的etime编号。我想出的正则表达式似乎可以在在线正则表达式引擎上运行,但是似乎不能与插件一起使用,并且无法编译:

/(?<=\bSEARCH.*etime=)[+-]?([0-9]*[.])?[0-9]+/g

Compiling the regular expression "(?<=\bSEARCH.*etime=)[+-]?([0-9]*[.])?[0-9]+" failed.

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

为什么不使用这样的东西?

/ SEARCH .* etime=([0-9.]+) entriesReturned=[0-9]+$/

当然,这假设etime=entriesReturned=总是排在最后。如果这个假设是错误的,则根据实际的日志输入语法,可能无法使用POSIX扩展正则表达式可靠地提取您要查找的值。

请注意,只有特定的DSType规范才实际使用匹配值。 GaugeInc不会,但是诸如CounterSetGaugeSet之类的其他语言会