Hallo !
Ich betreue eine Applikation (code in perl), die zum Monitoring einer Produktionsumgebung ein config file vorhaelt, in dem die Monitoring-Regeln u.A. auch regular expressions beinhalten.
Konkret sieht das so aus, dass die Monitoring-Software durch das config file durchgeht (pro Zeile eine Regel) und schaut, ob das angegebene regular expression pattern auf den event passt (der kommt aus nem logfile). Je nach Regel, fuer die ein positiver match gefunden wird, wird eine bestimmte Aktion durchgefuehrt. Es wird nur die erste Regel ausgefuehrt, danach abgebrochen.
Nun wurden bereits ca 1600-2000 Regeln (je nach Umgebung) zusammengetragen, das Regelfile (config file) ist entsprechend gross (ca 1600 Zeilen) und ich bin dabei, die Regeln zusammenzufassen.
Wir haben nun folgendes Problem:
Die Regeln muessen natuerlich in einer bestimmten Reihenfolge im config file enthalten.
Haben wir z.B. zwei Regeln/Regexps:
/A.*/
und
/.*/
so ist die Menge der durch das erste Pattern beschriebenen Zeichenfolgen eine Teilmenge der durch das zweite Pattern beschriebenen Zeichenfolgen. Die erste Regel muss dann immer ueber der zweiten Regel im Configfile stehen, um nicht unterzugehen, weil ja die zweite Regel auf jeden Fall zutreffen wuerde.
Wie gehe ich sowas an? Ich will ein script schreiben, welches mir ermoeglicht, zwei beliebige Regular Expressions auf Teilmenge bzw. Schnittmenge zu vergleiche. Am liebsten waer mir im Ende ne Funktion in meinem Script, welche mir zwei regexp-strings vergleicht und einfach sagt ob die regexps jeweils Teilmengen von der anderen beschrieben.
Hat da jemand ne Idee, wo ich ansetzen koennte ? Ich muesste vermutlich erstmal die regexps in irgendeine Art von Normalform bringen und dann paarweise reduzieren.
Gruss
Felix
Ich betreue eine Applikation (code in perl), die zum Monitoring einer Produktionsumgebung ein config file vorhaelt, in dem die Monitoring-Regeln u.A. auch regular expressions beinhalten.
Konkret sieht das so aus, dass die Monitoring-Software durch das config file durchgeht (pro Zeile eine Regel) und schaut, ob das angegebene regular expression pattern auf den event passt (der kommt aus nem logfile). Je nach Regel, fuer die ein positiver match gefunden wird, wird eine bestimmte Aktion durchgefuehrt. Es wird nur die erste Regel ausgefuehrt, danach abgebrochen.
Nun wurden bereits ca 1600-2000 Regeln (je nach Umgebung) zusammengetragen, das Regelfile (config file) ist entsprechend gross (ca 1600 Zeilen) und ich bin dabei, die Regeln zusammenzufassen.
Wir haben nun folgendes Problem:
Die Regeln muessen natuerlich in einer bestimmten Reihenfolge im config file enthalten.
Haben wir z.B. zwei Regeln/Regexps:
/A.*/
und
/.*/
so ist die Menge der durch das erste Pattern beschriebenen Zeichenfolgen eine Teilmenge der durch das zweite Pattern beschriebenen Zeichenfolgen. Die erste Regel muss dann immer ueber der zweiten Regel im Configfile stehen, um nicht unterzugehen, weil ja die zweite Regel auf jeden Fall zutreffen wuerde.
Wie gehe ich sowas an? Ich will ein script schreiben, welches mir ermoeglicht, zwei beliebige Regular Expressions auf Teilmenge bzw. Schnittmenge zu vergleiche. Am liebsten waer mir im Ende ne Funktion in meinem Script, welche mir zwei regexp-strings vergleicht und einfach sagt ob die regexps jeweils Teilmengen von der anderen beschrieben.
Hat da jemand ne Idee, wo ich ansetzen koennte ? Ich muesste vermutlich erstmal die regexps in irgendeine Art von Normalform bringen und dann paarweise reduzieren.
Gruss
Felix