Unterstützung regulärer Ausdrücke in System Center Operations Manager
Wenn Sie Management Packs erstellen, müssen Sie möglicherweise einen regulären Ausdrucksabgleich 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 regulärer Ausdrücke. Sie müssen wissen, in welchem Element Sie arbeiten, um den richtigen Ausdruck auswählen zu können. Berechnung von Gruppenmitgliedschaften und Ausdrucksfiltern verwenden für den Musterabgleich unterschiedliche Syntaxen.
Gruppenberechnung
Die Gruppenberechnung verwendet PERL
die Syntax regulärer Ausdrücke. Standardmäßig wird bei dem Abgleich die Groß-/Kleinschreibung 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 befindet sich in Ihrem Management Pack (MP), 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-Code enthalten ist, an den NAMEN des dbo.fn_MatchesRegularExpression
SQL-Aufrufs. Wenn dieser Aufruf den Wert 0 zurückgibt, ist die Übereinstimmung "false". Wenn ein Wert von 1 zurückgegeben wird, ist die Übereinstimmung wahr.
Wichtig
Bei dbo.fn_MatchesRegularExpression
dem SQL-Aufrufnamen selbst wird die Groß-/Kleinschreibung beachtet, sodass der MatchesRegularExpression
in den Kriterien für die dynamische Gruppenmitgliedschaft verwendete Operator auch die Groß-/Kleinschreibung beachtet.
GroupCalc unterstützt auch zwei spezielle Unterelemente, die abstrakte Ausdrücke der folgenden allgemeinen regex-Formatabfragen darstellen.
GroupCalc-Sonderfunktionen
GroupCalc-Unterelement | MP-Ausdruck | Regex-Entsprechung |
---|---|---|
ContainsSubstring | ^*{O}.*$ (Wherein {O} wird durch die Teilzeichenfolge ersetzt) |
|
MatchesWildcard | ? |
. |
MatchesWildcard | * |
.* |
MatchesWildcard | # |
[0-9] |
Notiz
Wenn eine dieser beiden speziellen Operatoren verwendet wird, wird bei der Auswertung immer die Groß-/Kleinschreibung beachtet.
Kriterien für den Ausdrucksfilterabgleich
Ausdrucksfilter, die in Management Packs verwendet werden, verwenden die Regex-Ausdruckssyntax .NET Framework. Nicht alle Ausdrücke funktionieren. Die folgenden Syntaxelemente für reguläre Ausdrücke von .NET Framework werden jedoch unterstützt. Ausdrucksfilter sind in Ihrem Management Pack vorhanden, wenn Sie das Ausdrucks-Eval-Modul verwenden.
Operations Manager regex-Syntax
Konstrukt | Operations Manager regex |
---|---|
Beliebiges Zeichen | . |
Zeichen im Bereich | [ ] |
Zeichen nicht im Bereich | [^ ] |
Zeilenanfang | ^ |
Zeilenende | $ |
Oder | | |
Group | ( ) |
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 bis M Übereinstimmungen | {n, m} |
Neue-Zeile-Zeichen | \n |
Tabstoppzeichen | \t |
Beispiele für reguläre Ausdrücke im Operations Manager (regex)
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 befinden (/var/lib/string1/*
oder /var/lib/string2/*
):
^(\/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 die Groß-/Kleinschreibung enthalten Agent
(Groß-/Kleinschreibung wird nicht beachtet):
^(?i)(agent.*)$
Reguläre Ausdrücke über SDK
Das Operations Manager SDK verfügt über einen "Matches "-Kriterienoperator zum Filtern von Objekten. Dieser Operator verwendet die gleiche Funktionalität wie MatchesCriteria
im zuvor erwähnten GroupCalc-Fall.
Wenn Sie mit dem SDK einen Kriterienausdruck erstellen, um Objekte in der Operations Manager-Datenbank zu finden, sind die folgenden Syntaxelemente gültig und nützlich:
- Vergleichsoperatoren
- Wildcardzeichen
- DateTime-Werte
- Vergleiche von ganzzahligen 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(e) |
---|---|---|
=, == | Wertet " true " aus, wenn die linken und rechten Operanden gleich sind. | Name = 'mymachine.contoso.com' |
!=, <> | Wertet " true " aus, wenn die linken und rechten Operanden ungleich sind. | Name != 'mymachine.contoso.com' |
> | Wertet " true " aus, wenn der linke Operand größer als der rechte Operand ist. | Severity > 0 |
< | Wertet " true " aus, wenn der linke Operand kleiner als der rechte Operand ist. | Severity < 2 |
>= | Wertet " true " aus, wenn der linke Operand größer oder gleich dem rechten Operanden ist. | Severity >= 1 |
<= | Wertet " true " aus, wenn der linke Operand kleiner oder gleich dem rechten Operanden ist. | Severity <= 3 |
LIKE | Wertet " true " aus, wenn der linke Operand mit dem Muster übereinstimmt, das vom rechten Operanden definiert ist. Verwenden Sie die Zeichen in der Wildcardtabelle , um das Muster zu definieren. | Name 'LIKE SQL%' Wertet auf "true" aus, wenn der Name Wert "SQLEngine" ist. Name LIKE '%SQL%' Wertet "true" aus, wenn der Name Wert "MySQLEngine" ist. |
ÜBEREINSTIMMUNGEN | Wertet " true " aus, wenn der linke Operand mit dem vom rechten Operanden definierten regulären Ausdruck übereinstimmt. | Name MATCHES 'SQL*05' Wertet "true" aus, wenn der Name Wert SQL2005 ist. |
IS NULL | Wertet " true " aus, wenn der Wert des linken Operanden null ist. | ConnectorId IS NULL Wertet auf "true ", wenn die ConnectorId Eigenschaft keinen Wert enthält. |
IS NOT NULL | Wertet " true " aus, wenn der Wert des linken Operanden nicht NULL ist. | ConnectorId IS NOT NULL Wertet " true " aus, wenn die ConnectorId Eigenschaft einen Wert enthält. |
IN | Wertet " true " aus, wenn sich der Wert des linken Operanden in der Liste der werte befindet, die vom rechten Operanden definiert sind. 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') Wertet " true " aus, wenn der Wert der Id Eigenschaft einer der beiden global eindeutigen Bezeichner ist, die im Ausdruck bereitgestellt werden. |
UND | Wertet " true " aus, wenn die linken und rechten Operanden beide wahr sind. | Name = 'SQL%' AND Description LIKE 'MyData%' |
ODER | Wertet " true " aus, wenn entweder der linke oder der rechte Operand wahr ist. | Name = 'SQL%' OR Description LIKE 'MyData%' |
NOT | Wertet auf "true " aus, wenn der richtige Operand nicht wahr ist. | NOT (Name = 'IIS' OR Name = 'SQL') |
Platzhalter
In der folgenden Tabelle werden die Wildcardzeichen definiert, mit denen Sie ein Muster erstellen können, wenn Sie den LIKE
Operator verwenden.
Mit LIKE-Operatoren verwendete Wildcardoperatoren
Platzhalter | Beschreibung | Beispiel |
---|---|---|
% | Ein Platzhalter, der einer beliebigen Anzahl von Zeichen entspricht. | Name LIKE 'SQL%' Wertet auf "true" aus, wenn der Name Wert "SQLEngine" ist. Name LIKE '%SQL%' Wertet "true" aus, wenn der Name Wert "MySQLEngine" ist. |
_ | Ein Wildcard, der einem einzelnen Zeichen entspricht. | Name LIKE 'SQL200_' Ergibt "true" für die folgenden Name Werte:SQL2000 SQL2005 Hinweis: Der Ausdruck wird für SQL200 als falsch ausgewertet, da das Symbol _ genau einem Zeichen im Name Wert entsprechen muss. |
[] | Ein Wildcard, der einem beliebigen Zeichen entspricht, das in den Zeichensatz eingeschlossen ist. Hinweisklammern werden auch beim Qualifizieren von Verweisen auf MonitoringObject-Eigenschaften verwendet. Weitere Informationen finden Sie unter Definieren von Abfragen für Überwachungsobjekte. |
Name LIKE 'SQL200[05]' Ergibt "true" für die folgenden Name Werte:SQL2000 SQL2005 Der Ausdruck wird für SQL2003 auf "false" ausgewertet. |
[^] | Ein Wildcard, der einem beliebigen Zeichen entspricht, das nicht in den Zeichensatz eingeschlossen ist. | Name LIKE 'SQL200[^05]' Wertet für SQL2003 auf "true" aus. Der Ausdruck wird für SQL2000 und SQL2005 auf "false" ausgewertet. |
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 vorzunehmen.
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);