Ondersteuning voor reguliere expressies in System Center Operations Manager
Wanneer u management packs ontwerpt, moet u mogelijk reguliere expressiekoppelingen opnemen in ontdekkingen en groepen. Reguliere expressies kunnen ook nodig zijn voor patroonkoppeling in expressiecriteria in monitors en regels.
Oorspronkelijke productversie: System Center Operations Manager
Oorspronkelijk KB-nummer: 2702651
Operations Manager ondersteunt twee verschillende typen reguliere expressies. U moet weten in welk element u werkt om de juiste expressie te kunnen kiezen. Berekenings- en expressiefilters voor groepslidmaatschappen gebruiken duidelijk verschillende syntaxis voor patroonkoppeling.
Groepsberekening
Groepsberekening maakt gebruik van PERL
de syntaxis van de reguliere expressie. Standaard is de overeenkomst niet hoofdlettergevoelig, maar u kunt opgeven dat een expressie hoofdlettergevoelig moet zijn met behulp van een speciaal kenmerk in de XML. Zie SimpleCriteriaType voor meer informatie.
Groepsberekening vindt u in uw management pack (MP) wanneer u de Group Calc
module gebruikt. De GroupCalc
expressie gebruikt de MatchesRegularExpression
operator om dynamisch groepslidmaatschap te maken op basis van patroonkoppelingsexpressies. De implementatie van deze operator geeft de expressie die in de MP XML is gevonden door aan de naam van de dbo.fn_MatchesRegularExpression
SQL-aanroep. Als deze aanroep een waarde van 0 retourneert, is de overeenkomst onwaar. Als er een waarde van 1 wordt geretourneerd, is de overeenkomst waar.
Belangrijk
De naam van de dbo.fn_MatchesRegularExpression
SQL-aanroep zelf is hoofdlettergevoelig, dus de MatchesRegularExpression
operator die wordt gebruikt in dynamische criteria voor groepslidmaatschap, is ook hoofdlettergevoelig.
GroupCalc ondersteunt ook twee speciale subelementen die abstracte expressies maken van de volgende algemene regex-stijlquery's.
Speciale functies GroupCalc
Subelement GroupCalc | MP-expressie | Regex-equivalent |
---|---|---|
ContainsSubstring | ^*{O}.*$ (Waarbij {O} wordt vervangen door de subtekenreeks) |
|
MatchesWildcard | ? |
. |
MatchesWildcard | * |
.* |
MatchesWildcard | # |
[0-9] |
Notitie
Als een van deze twee speciale operators wordt gebruikt, is de evaluatie altijd hoofdlettergevoelig.
Overeenkomende criteria voor expressiefilters
Expressiefilters die in management packs worden gebruikt, maken gebruik van de syntaxis van de regex-expressie van .NET Framework. Niet alle expressies werken. De volgende .NET Framework-syntaxiselementen voor reguliere expressies worden echter ondersteund. Expressiefilters bestaan in uw management pack wanneer u de module Expression Eval gebruikt.
Regex-syntaxis van Operations Manager
Bouwen | Operations Manager regex |
---|---|
Elk teken | . |
Teken in bereik | [ ] |
Teken niet in bereik | [^ ] |
Begin van regel | ^ |
Einde van regel | $ |
Or | | |
Groep | ( ) |
0 of 1 overeenkomst | ? |
0 of meer overeenkomsten | * |
1 of meer overeenkomsten | + |
Exact N komt overeen | {n} |
Ten minste N-overeenkomsten | {n, } |
Bij de meeste N-overeenkomsten | { , n} |
N-naar-M-overeenkomsten | {n, m} |
Teken voor nieuwe regel | \n |
Tabteken | \t |
Voorbeelden van reguliere expressies (regex) van Operations Manager
Voorbeeld 1
Zoek naar overeenkomsten die één tekenreeks bevatten: string1
^(string1)$
Voorbeeld 2
Zoek naar overeenkomsten die een van de twee tekenreeksen bevatten, string1
of string2
:
^(string1)|^(string2)$
Voorbeeld 3
Zoek naar overeenkomsten met mappen die zich recursief onder de twee mappaden bevinden, (/var/lib/string1/*
of /var/lib/string2/*
):
^(\/var\/lib\/string1\/.*)|^(\/var\/lib\/string2\/.*)$
Voorbeeld 4
Zoek naar overeenkomsten die een van de twee tekenreeksen bevatten of Agent1.contoso.com
Agent2.contoso.com
(niet hoofdlettergevoelig):
^(?i)(agent1.contoso.com)|(?i)(agent2.contoso.com)$
Zoek naar overeenkomsten die niet hoofdlettergevoelig zijn Agent
:
^(?i)(agent.*)$
Reguliere expressies via SDK
De Operations Manager SDK heeft een criteriumoperator Overeenkomsten voor het filteren van objecten. Deze operator gebruikt dezelfde functionaliteit als MatchesCriteria
in de GroupCalc-case die eerder is vermeld.
Wanneer u de SDK gebruikt om een criteriumexpressie te maken om objecten in de Operations Manager-database te vinden, zijn de volgende syntaxiselementen geldig en nuttig:
- Vergelijkingsoperators
- Jokertekens
- Datum/tijd-waarden
- Vergelijkingen van gehele getallen naar XML-opsomming
Vergelijkingsoperators
U kunt vergelijkingsoperatoren gebruiken wanneer u een criteriumexpressie maakt. De geldige operators worden beschreven in de volgende tabel.
SDK-vergelijkingsoperatoren
Operator | Beschrijving | Voorbeeld(en) |
---|---|---|
=, == | Evalueert waar als de linker- en rechteroperanden gelijk zijn. | Name = 'mymachine.contoso.com' |
!=, <> | Evalueert waar als de linker- en rechteroperanden ongelijk zijn. | Name != 'mymachine.contoso.com' |
> | Evalueert waar als de linkeroperand groter is dan de rechteroperand. | Severity > 0 |
< | Evalueert waar als de linkeroperand kleiner is dan de rechteroperand. | Severity < 2 |
>= | Evalueert waar als de linkeroperand groter is dan of gelijk is aan de rechteroperand. | Severity >= 1 |
<= | Evalueert waar als de linkeroperand kleiner is dan of gelijk is aan de rechteroperand. | Severity <= 3 |
ALS | Evalueert waar als de linkeroperand overeenkomt met het patroon dat is gedefinieerd door de rechteroperand. Gebruik de tekens in de jokertekentabel om het patroon te definiëren. | Name 'LIKE SQL%' Evalueert waar als de Name waarde SQLEngine is. Name LIKE '%SQL%' Evalueert waar als de Name waarde MySQLEngine is. |
LUCIFERS | Evalueert waar als de linkeroperand overeenkomt met de reguliere expressie die is gedefinieerd door de rechteroperand. | Name MATCHES 'SQL*05' Evalueert waar als de Name waarde SQL2005 is. |
IS NULL | Evalueert waar als de waarde van de linkeroperand null is. | ConnectorId IS NULL Evalueert waar als de ConnectorId eigenschap geen waarde bevat. |
IS NOT NULL | Evalueert waar als de waarde van de linkeroperand niet null is. | ConnectorId IS NOT NULL Evalueert waar als de ConnectorId eigenschap een waarde bevat. |
IN | Evalueert waar als de waarde van de linkeroperand zich in de lijst met waarden bevindt die zijn gedefinieerd door de rechteroperand. Opmerking De IN-operator is alleen geldig voor gebruik met eigenschappen van het type Guid. |
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002') Evalueert waar als de waarde van de Id eigenschap een van de twee globaal unieke id's in de expressie is. |
EN | Evalueert waar als de linker- en rechteroperanden beide waar zijn. | Name = 'SQL%' AND Description LIKE 'MyData%' |
OF | Evalueert waar als de linker- of rechteroperand waar is. | Name = 'SQL%' OR Description LIKE 'MyData%' |
NIET | Evalueert waar als de juiste operand niet waar is. | NOT (Name = 'IIS' OR Name = 'SQL') |
Jokertekens
In de volgende tabel worden de jokertekens gedefinieerd die u kunt gebruiken om een patroon te maken wanneer u de LIKE
operator gebruikt.
Jokertekenoperators die worden gebruikt met like-operator
Jokerteken | Beschrijving | Voorbeeld |
---|---|---|
% | Een jokerteken dat overeenkomt met een willekeurig aantal tekens. | Name LIKE 'SQL%' Evalueert waar als de Name waarde SQLEngine is. Name LIKE '%SQL%' Evalueert waar als de Name waarde MySQLEngine is. |
_ | Een jokerteken dat overeenkomt met één teken. | Name LIKE 'SQL200_' Resulteert in waar voor de volgende Name waarden: SQL2000 SQL2005 Opmerking: De expressie resulteert in onwaar voor SQL200 omdat het symbool _ exact één teken in de Name waarde moet overeenkomen. |
[] | Een jokerteken dat overeenkomt met een willekeurig teken dat is ingesloten in de tekenset. Notitiehaken worden ook gebruikt bij het kwalificeren van verwijzingen naar eigenschappen van MonitoringObject . Zie Query's definiëren voor bewakingsobjecten voor meer informatie. |
Name LIKE 'SQL200[05]' Resulteert in waar voor de volgende Name waarden:SQL2000 SQL2005 De expressie resulteert in onwaar voor SQL2003. |
[^] | Een jokerteken dat overeenkomt met een willekeurig teken dat niet in de tekenset staat. | Name LIKE 'SQL200[^05]' Resulteert in waar voor SQL2003. De expressie resulteert in onwaar voor SQL2000 en SQL2005. |
Datum/tijd-vergelijkingen
Wanneer u een DateTime-waarde in een query-expressie gebruikt, gebruikt u de algemene Datum/tijd-indeling (G) om de DateTime
waarde te converteren naar een tekenreekswaarde. Bijvoorbeeld:
string qStr = "TimeCreated <= '" + myInstant.ToString("G") + "'";
ManagementPackCriteria mpCriteria = new ManagementPackCriteria(qStr);
Converteer alle datumwaarden naar de G-indeling (GMT) om geldige tekenreeksvergelijkingen te maken.
Vergelijking van gehele getallen met opsommingen
Wanneer u een opsommingswaarde voor gehele getallen in een query-expressie gebruikt, cast u de opsommingswaarde naar een geheel getal.
Bijvoorbeeld:
string qStr = "Severity > " + (int)ManagementPackAlertSeverity.Warning;
MonitoringAlertCriteria alertCriteria = new MonitoringAlertCriteria(qStr);