File grouping patterns - Regex funktioniert nicht

CMK version: 2.0.0p19
OS version: Ubuntu 20.04

Ich möchte ein “File grouping pattern” über zwei bestimmte Files erstellen (in dem Verzeichnis liegen noch weitere irrelevante Files) und habe im Code von fileinfo (Funktion _filename_matches) gesehen, dass man auch Regex zum Definieren eines Pattern nutzen kann, indem man eine “~” voranstellt.

Pfad zu den Dateien:
/var/log/technologie/adghimport.log
/var/log/technologie/all_routerconfig_creator.log

Regex Pattern:
\/var\/log\/technologie\/(?:adghimport|all_routerconfig_creator).log

Also hab ich in der Regel mit Include pattern mit ~\/var\/log\/technologie\/(?:adghimport|all_routerconfig_creator).log
angegeben.

Das funktioniert jedoch überhaupt nicht.

Hab mir im Plugin mal “raw_group_patterns” und “group_patterns” ausgeben lassen.

raw_group_patterns =[('~~/var/log/technologie/all_routerconfig_creator.log', '')]
group_patterns ={('~~/var/log/technologie/all_routerconfig_creator.log', '')}

An irgendeiner Stelle wird also aus ~\/var\/log\/technologie\/(?:adghimport|all_routerconfig_creator).log
dann
~~/var/log/technologie/all_routerconfig_creator.log

Könnt ihr das Verhalten nachstellen/nachvollziehen bzw. kennt ihr einen Weg, mehrere explizite Files anzugeben?

Die doppelte Tilde wird benutzt um festzustellen, dass dies ein Regex ist.
Nachdem die Pattern eingelesen wurde wird bei doppelter Tilde eine entfernt und das Flag für Regex gesetzt.

Was passiert wenn du das “?:” für die Non Capture Group weg lässt? Dies sollte hier eh egal sein.

~\/var\/log\/technologie\/(adghimport|all_routerconfig_creator)\.log
oder
~.*\/(adghimport|all_routerconfig_creator)\.log

Hi Andreas,

habe deine zwei Regex Vorschläge eben nach meinem Urlaub einmal ausprobiert. Auch diese werden von Checkmk komplett zerstört.

z.B. macht Checkmk aus

~.*\/(adghimport|all_routerconfig_creator)\.log

das hier

~.*\/all_routerconfig_creator\.log

Das Regex-“Oder” ist nicht mehr vorhanden.

Ich hab mir auch mal die “params” printen lassen, die an die Funktion “check_fileinfo_groups” übergeben werden.

{'group_patterns': [('~~.*\\/all_routerconfig_creator\\.log', '')], 'maxage_oldest': (88200, 90000)}

Hier werden doch ganz klar die Params nicht korrekt übergeben. Ich weiß jedoch nicht an welcher Stelle diese erzeugt werden. Hast du eine Idee?

In die rules.mk wird die Regex immerhin korrekt geschrieben:

('Technologie Logs', ('~.*\\/(adghimport|all_routerconfig_creator)\\.log', ''))

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed. Contact an admin if you think this should be re-opened.