Unterstützung regulärer Ausdrücke in System Center Operations Manager

Wenn Sie Management Packs erstellen, müssen Sie möglicherweise den Abgleich regulärer Ausdrücke in Ermittlungen und Gruppen einschließen. Reguläre Ausdrücke können auch für den Musterabgleich in Ausdruckskriterien in Monitoren und Regeln erforderlich sein.

Ursprüngliche Produktversion: System Center Operations Manager
Ursprüngliche KB-Nummer: 2702651

Operations Manager unterstützt zwei verschiedene Typen von regulären Ausdrücken. Sie müssen wissen, in welchem Element Sie arbeiten, um den richtigen Ausdruck auswählen zu können. Gruppenmitgliedschaftsberechnung und Ausdrucksfilter verwenden eindeutig unterschiedliche Syntaxen für den Musterabgleich.

Gruppenberechnung

Bei der Gruppenberechnung wird die Syntax für reguläre Ausdrücke verwendet PERL . Standardmäßig wird beim Abgleich die Groß-/Kleinschreibung nicht beachtet. Sie können jedoch angeben, dass bei einem Ausdruck die Groß-/Kleinschreibung beachtet werden muss, indem Sie ein spezielles Attribut im XML-Code verwenden. Weitere Informationen finden Sie unter SimpleCriteriaType.

Die Gruppenberechnung wird in Ihrem Management Pack (MP) gefunden, wenn Sie das Group Calc Modul verwenden. Der GroupCalc Ausdruck verwendet den MatchesRegularExpression -Operator, um eine dynamische Gruppenmitgliedschaft basierend auf Musterabgleichsausdrücken zu erstellen. Die Implementierung dieses Operators übergibt den Ausdruck, der im MP-XML enthalten ist, an den dbo.fn_MatchesRegularExpression SQL-Aufrufnamen. Wenn dieser Aufruf den Wert 0 zurückgibt, ist die Übereinstimmung false. Wenn der Wert 1 zurückgegeben wird, ist die Übereinstimmung true.

Wichtig

Beim dbo.fn_MatchesRegularExpression SQL-Aufrufnamen selbst wird die Groß-/Kleinschreibung beachtet, sodass bei dem operator, der MatchesRegularExpression in dynamischen Gruppenmitgliedschaftskriterien verwendet wird, auch die Groß-/Kleinschreibung beachtet wird.

GroupCalc unterstützt auch zwei spezielle Unterelemente, die abstrakte Ausdrücke der folgenden allgemeinen Abfragen im RegEx-Stil erstellen.

Spezielle GroupCalc-Funktionen

GroupCalc-Unterelement MP-Ausdruck RegEx-Entsprechung
ContainsSubstring ^*{O}.*$ (Wobei {O} durch die Teilzeichenfolge ersetzt wird)
MatchesWildcard ? .
MatchesWildcard * .*
MatchesWildcard # [0-9]

Hinweis

Wenn einer dieser beiden speziellen Operatoren verwendet wird, wird bei der Auswertung immer die Groß-/Kleinschreibung beachtet.

Abgleichskriterien für Ausdrucksfilter

Ausdrucksfilter, die in Management Packs verwendet werden, verwenden .NET Framework Ausdruckssyntax. Nicht alle Ausdrücke funktionieren. Die folgenden .NET Framework Syntaxelemente für reguläre Ausdrücke werden jedoch unterstützt. Ausdrucksfilter sind in Ihrem Management Pack vorhanden, wenn Sie das Ausdrucksval-Modul verwenden.

Operations Manager-RegEx-Syntax

Erstellen Operations Manager regex
Beliebiges Zeichen .
Zeichen im Bereich [ ]
Zeichen nicht im Bereich [^ ]
Zeilenanfang ^
Zeilenende $
Oder |
Gruppe ( )
0 oder 1 Übereinstimmung ?
0 oder mehr Übereinstimmungen *
1 oder mehr Übereinstimmungen +
Genau N Übereinstimmungen {n}
Mindestens N Übereinstimmungen {n, }
Höchstens N Übereinstimmungen { , n}
N-M-Übereinstimmungen {n, m}
Zeilenumbruchzeichen \n
Tabulatorzeichen \t

Beispiele für reguläre Ausdrücke (RegEx) in Operations Manager

Beispiel 1

Suchen Sie nach übereinstimmungen, die eine einzelne Zeichenfolge enthalten: string1

^(string1)$

Beispiel 2

Suchen Sie nach Übereinstimmungen, die eine der beiden Zeichenfolgen enthalten, string1 oder string2:

^(string1)|^(string2)$

Beispiel 3

Suchen Sie nach Übereinstimmungen mit Ordnern, die sich rekursiv unter den beiden Ordnerpfaden (/var/lib/string1/* oder /var/lib/string2/*) befinden:

^(\/var\/lib\/string1\/.*)|^(\/var\/lib\/string2\/.*)$

Beispiel 4

Suchen Sie nach Übereinstimmungen, die eine der beiden Zeichenfolgen enthalten, Agent1.contoso.com oder Agent2.contoso.com (Groß-/Kleinschreibung wird nicht beachtet):

^(?i)(agent1.contoso.com)|(?i)(agent2.contoso.com)$

Suchen Sie nach übereinstimmungen, die enthalten Agent (Groß-/Kleinschreibung wird nicht beachtet):

^(?i)(agent.*)$

Reguläre Ausdrücke über DAS SDK

Das Operations Manager SDK verfügt über einen Übereinstimmungskriterienoperator zum Filtern von Objekten. Dieser Operator verwendet die gleiche Funktionalität wie MatchesCriteria im zuvor erwähnten GroupCalc-Fall.

Wenn Sie das SDK zum Erstellen eines Kriterienausdrucks zum Suchen von Objekten in der Operations Manager-Datenbank verwenden, sind die folgenden Syntaxelemente gültig und nützlich:

  • Vergleichsoperatoren
  • Wildcardzeichen
  • DateTime-Werte
  • Vergleiche von Integer-zu-XML-Enumerationen

Vergleichsoperatoren

Sie können Vergleichsoperatoren verwenden, wenn Sie einen Kriterienausdruck erstellen. Die gültigen Operatoren werden in der folgenden Tabelle beschrieben.

SDK-Vergleichsoperatoren

Operator Beschreibung Beispiel(en)
=, == Wird als true ausgewertet, wenn die linken und rechten Operanden gleich sind. Name = 'mymachine.contoso.com'
!=, <> Wird als true ausgewertet, wenn die linken und rechten Operanden ungleich sind. Name != 'mymachine.contoso.com'
> Wird als true ausgewertet, wenn der linke Operand größer als der rechte Operand ist. Severity > 0
< Wird als true ausgewertet, wenn der linke Operand kleiner als der rechte Operand ist. Severity < 2
>= Wird als true ausgewertet, wenn der linke Operand größer oder gleich dem rechten Operanden ist. Severity >= 1
<= Wird als true ausgewertet, wenn der linke Operand kleiner oder gleich dem rechten Operanden ist. Severity <= 3
WIE Wird als true ausgewertet, wenn der linke Operand mit dem Muster übereinstimmt, das vom rechten Operanden definiert wird. Verwenden Sie die Zeichen in der Wildcardtabelle , um das Muster zu definieren. Name 'LIKE SQL%'
Wird als TRUE ausgewertet, wenn der Name Wert SQLEngine ist.

Name LIKE '%SQL%'
Wird als true ausgewertet, wenn der Name Wert MySQLEngine ist.
ÜBEREINSTIMMUNGEN Wird als TRUE ausgewertet , wenn der linke Operand mit dem regulären Ausdruck übereinstimmt, der vom rechten Operanden definiert wird. Name MATCHES 'SQL*05'
Wird als TRUE ausgewertet, wenn der Name Wert SQL2005 ist.
IS NULL Wird als true ausgewertet, wenn der Wert des linken Operanden NULL ist. ConnectorId IS NULL
Wird als true ausgewertet, wenn die ConnectorId Eigenschaft keinen Wert enthält.
IST NICHT NULL Wird als true ausgewertet, wenn der Wert des linken Operanden nicht NULL ist. ConnectorId IS NOT NULL
Wird als true ausgewertet, wenn die ConnectorId Eigenschaft einen Wert enthält.
IN Wird als true ausgewertet, wenn sich der Wert des linken Operanden in der Liste der Werte befindet, die vom rechten Operanden definiert werden.

Hinweis Der IN-Operator ist nur für die Verwendung mit Eigenschaften vom Typ GUID gültig.
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002')
Wird als true ausgewertet, wenn der Wert der Id Eigenschaft einer der beiden global eindeutigen Bezeichner ist, die im Ausdruck bereitgestellt werden.
UND Wird als true ausgewertet, wenn die linken und rechten Operanden true sind. Name = 'SQL%' AND Description LIKE 'MyData%'
ODER Wird als TRUE ausgewertet, wenn der linke oder rechte Operand true ist. Name = 'SQL%' OR Description LIKE 'MyData%'
NOT Wird als true ausgewertet, wenn der rechte Operand nicht true ist. NOT (Name = 'IIS' OR Name = 'SQL')

Platzhalter

In der folgenden Tabelle werden die Wildcardzeichen definiert, die Sie verwenden können, um ein Muster zu erstellen, wenn Sie den LIKE Operator verwenden.

Mit dem LIKE-Operator verwendete Wildcard-Operatoren

Platzhalter Beschreibung Beispiel
% Ein Platzhalter, der einer beliebigen Anzahl von Zeichen entspricht. Name LIKE 'SQL%'
Wird als TRUE ausgewertet, wenn der Name Wert SQLEngine ist.

Name LIKE '%SQL%'
Wird als true ausgewertet, wenn der Name Wert MySQLEngine ist.
_ Ein Wildcard, der mit einem einzelnen Zeichen übereinstimmt. Name LIKE 'SQL200_'
Wird für die folgenden Name Werte als true ausgewertet:

SQL2000
SQL2005

Hinweis: Der Ausdruck wird für SQL200 als false ausgewertet, da das Symbol _ genau mit einem Zeichen im Name Wert übereinstimmen muss.
[] Ein Wildcard, der einem beliebigen Zeichen entspricht, das im Zeichensatz eingeschlossen ist.

Hinweis Klammern werden auch verwendet, wenn Verweise auf MonitoringObject-Eigenschaften qualifiziert werden. Weitere Informationen finden Sie unter Definieren von Abfragen für Überwachungsobjekte.
Name LIKE 'SQL200[05]'
Wird für die folgenden Name Werte als true ausgewertet:

SQL2000
SQL2005

Der Ausdruck ergibt für SQL2003false.
[^] Ein Wildcard, der mit einem Zeichen übereinstimmt, das nicht in den Zeichensatz eingeschlossen ist. Name LIKE 'SQL200[^05]'
Wird für SQL2003 als true ausgewertet.

Der Ausdruck ergibt für SQL2000 und SQL2005false.

DateTime-Vergleiche

Wenn Sie einen DateTime-Wert in einem Abfrageausdruck verwenden, verwenden Sie das allgemeine DateTime-Format (G), um den DateTime Wert in einen Zeichenfolgenwert zu konvertieren. Zum Beispiel:

string qStr = "TimeCreated <= '" + myInstant.ToString("G") + "'";
ManagementPackCriteria mpCriteria = new ManagementPackCriteria(qStr);

Konvertieren Sie alle Datumswerte in das G-Format (GMT), um gültige Zeichenfolgenvergleiche durchzuführen.

Ganzzahliger Wertvergleich mit Enumerationen

Wenn Sie einen ganzzahligen Enumerationswert in einem Abfrageausdruck verwenden, wandeln Sie den Enumerationswert in eine ganze Zahl um.

Zum Beispiel:

string qStr = "Severity > " + (int)ManagementPackAlertSeverity.Warning;
MonitoringAlertCriteria alertCriteria = new MonitoringAlertCriteria(qStr);

Weitere Informationen