Плагин Collectd Tail с положительным обратным выражением

Я пытаюсь сопоставить определенные значения в файле, используя плагин «хвост» для collectd. В другом посте я видел, что плагин поддерживает только синтаксис 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

Я хотел бы найти номер etime для каждой операции ПОИСК. Регулярное выражение, которое я придумал, похоже, работает с онлайн-движком регулярных выражений, но, похоже, не работает с плагином и не компилируется:

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

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

Что мне здесь не хватает?


person Robert Wang    schedule 19.07.2018    source источник


Ответы (1)


Почему бы не использовать что-то подобное?

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

Это предполагает, что etime= и entriesReturned= всегда идут последними, конечно. Если это предположение неверно, в зависимости от фактического синтаксиса записи журнала может оказаться невозможным надежно извлечь искомое значение с помощью расширенных регулярных выражений POSIX.

Обратите внимание, что только определенные спецификации DSType фактически используют совпадающее значение. GaugeInc нет, но другие, такие как CounterSet или GaugeSet, будут.

person Florian Weimer    schedule 20.07.2018