Supporto delle espressioni regolari in System Center Operations Manager
Quando si creano Management Pack, potrebbe essere necessario includere la corrispondenza delle espressioni regolari nelle individuazioni e nei gruppi. Le espressioni regolari possono essere necessarie anche per la ricerca di criteri di ricerca nei criteri di espressione nei monitoraggi e nelle regole.
Versione originale del prodotto: System Center Operations Manager
Numero KB originale: 2702651
Operations Manager supporta due tipi diversi di espressioni regolari. È necessario conoscere l'elemento in cui si sta lavorando per poter scegliere l'espressione corretta. I filtri di calcolo e espressione di appartenenza a gruppi usano sintassi distintemente diverse per la ricerca di criteri di ricerca.
Calcolo del gruppo
Il calcolo del gruppo usa la sintassi delle PERL
espressioni regolari. Per impostazione predefinita, la corrispondenza non fa distinzione tra maiuscole e minuscole, ma è possibile specificare che un'espressione deve fare distinzione tra maiuscole e minuscole usando un attributo speciale nel codice XML. Per altre informazioni, vedere SimpleCriteriaType.
Il calcolo del gruppo si trova nel Management Pack (MP) ogni volta che si usa il Group Calc
modulo. L'espressione GroupCalc
usa l'operatore per creare l'appartenenza MatchesRegularExpression
dinamica ai gruppi in base alle espressioni di corrispondenza dei criteri. L'implementazione di questo operatore passa l'espressione presente in MP XML al nome della dbo.fn_MatchesRegularExpression
chiamata SQL. Se questa chiamata restituisce un valore pari a 0, la corrispondenza è false. Se restituisce un valore pari a 1, la corrispondenza è true.
Importante
Anche il nome della dbo.fn_MatchesRegularExpression
chiamata SQL fa distinzione tra maiuscole e minuscole, quindi anche l'operatore MatchesRegularExpression
usato nei criteri di appartenenza dinamica ai gruppi farà distinzione tra maiuscole e minuscole.
GroupCalc supporta anche due sottoelementi speciali che creano espressioni astratte delle query di stile regex comuni seguenti.
Funzioni speciali GroupCalc
Elemento secondario GroupCalc | Espressione MP | Equivalente regex |
---|---|---|
ContainsSubstring | ^*{O}.*$ (Wherein {O} viene sostituito dalla sottostringa) |
|
MatchesWildcard | ? |
. |
MatchesWildcard | * |
.* |
MatchesWildcard | # |
[0-9] |
Note
Se uno di questi due operatori speciali viene usato, la valutazione fa sempre distinzione tra maiuscole e minuscole.
Criteri di corrispondenza dei filtri delle espressioni
I filtri di espressione usati nei Management Pack usano la sintassi delle espressioni regex di .NET Framework. Non tutte le espressioni funzionano. Sono tuttavia supportati gli elementi della sintassi delle espressioni regolari di .NET Framework seguenti. I filtri di espressione sono presenti nel Management Pack quando si usa il modulo Espressione Eval.
Sintassi regex di Operations Manager
Costrutto | Espressione regolare di Operations Manager |
---|---|
Qualsiasi carattere | . |
Carattere nell'intervallo | [ ] |
Carattere non compreso nell'intervallo | [^ ] |
Inizio riga | ^ |
Fine riga | $ |
O | | |
Raggruppa | ( ) |
0 o 1 corrispondenza | ? |
0 o più corrispondenze | * |
1 o più corrispondenze | + |
Corrispondenze esattamente N | {n} |
Almeno N corrispondenze | {n,} |
Al massimo N corrispondenze | { , n} |
Corrispondenze da N a M | {n, m} |
Nuovo carattere riga | \n |
Carattere di tabulazioni | \t |
Esempi di espressioni regolari (regex) di Operations Manager
Esempio 1
Cercare eventuali corrispondenze contenenti una singola stringa, string1
:
^(string1)$
Esempio 2
Cercare eventuali corrispondenze contenenti una delle due stringhe string1
o string2
:
^(string1)|^(string2)$
Esempio 3
Cercare eventuali corrispondenze alle cartelle che si trovano in modo ricorsivo nei due percorsi delle cartelle, (/var/lib/string1/*
o /var/lib/string2/*
):
^(\/var\/lib\/string1\/.*)|^(\/var\/lib\/string2\/.*)$
Esempio 4
Cercare eventuali corrispondenze che contengono una delle due stringhe Agent1.contoso.com
o Agent2.contoso.com
(senza distinzione tra maiuscole e minuscole):
^(?i)(agent1.contoso.com)|(?i)(agent2.contoso.com)$
Cercare eventuali corrispondenze che contengono Agent
(senza distinzione tra maiuscole e minuscole):
^(?i)(agent.*)$
Espressioni regolari tramite SDK
Operations Manager SDK dispone di un operatore Criteri di corrispondenza per filtrare gli oggetti. Questo operatore usa la stessa funzionalità del MatchesCriteria
caso GroupCalc indicato in precedenza.
Quando si usa l'SDK per costruire un'espressione di criteri per trovare oggetti nel database di Operations Manager, gli elementi di sintassi seguenti sono validi e utili:
- Operatori di confronto
- Caratteri jolly
- Valori DateTime
- Confronti di enumerazione da integer a XML
Operatori di confronto
È possibile usare gli operatori di confronto quando si costruisce un'espressione di criteri. Gli operatori validi sono descritti nella tabella seguente.
Operatori di confronto sdk
Operatore | Descrizione | Esempi |
---|---|---|
=, == | Restituisce true se gli operandi sinistro e destro sono uguali. | Name = 'mymachine.contoso.com' |
!=, <> | Restituisce true se gli operandi sinistro e destro non sono uguali. | Name != 'mymachine.contoso.com' |
> | Restituisce true se l'operando sinistro è maggiore dell'operando destro. | Severity > 0 |
< | Restituisce true se l'operando sinistro è minore dell'operando destro. | Severity < 2 |
>= | Restituisce true se l'operando sinistro è maggiore o uguale all'operando destro. | Severity >= 1 |
<= | Restituisce true se l'operando sinistro è minore o uguale all'operando destro. | Severity <= 3 |
LIKE | Restituisce true se l'operando sinistro corrisponde al modello definito dall'operando destro. Usare i caratteri nella tabella con caratteri jolly per definire il criterio. | Name 'LIKE SQL%' Restituisce true se il Name valore è SQLEngine. Name LIKE '%SQL%' Restituisce true se il Name valore è MySQLEngine. |
CORRISPONDENZE | Restituisce true se l'operando sinistro corrisponde all'espressione regolare definita dall'operando destro. | Name MATCHES 'SQL*05' Restituisce true se il Name valore è SQL2005. |
IS NULL | Restituisce true se il valore dell'operando sinistro è Null. | ConnectorId IS NULL Restituisce true se la ConnectorId proprietà non contiene un valore. |
IS NOT NULL | Restituisce true se il valore dell'operando sinistro non è Null. | ConnectorId IS NOT NULL Restituisce true se la ConnectorId proprietà contiene un valore. |
IN | Restituisce true se il valore dell'operando sinistro si trova nell'elenco di valori definiti dall'operando destro. Nota L'operatore IN è valido solo per l'uso con le proprietà di tipo Guid. |
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002') Restituisce true se il valore della Id proprietà è uno dei due identificatori univoci globali forniti nell'espressione. |
E | Restituisce true se gli operandi sinistro e destro sono entrambi true. | Name = 'SQL%' AND Description LIKE 'MyData%' |
OPPURE | Restituisce true se l'operando sinistro o destro è true. | Name = 'SQL%' OR Description LIKE 'MyData%' |
NOT | Restituisce true se l'operando destro non è true. | NOT (Name = 'IIS' OR Name = 'SQL') |
Caratteri jolly
Nella tabella seguente vengono definiti i caratteri jolly che è possibile usare per costruire un criterio quando si usa l'operatore LIKE
.
Operatori con caratteri jolly usati con l'operatore LIKE
Wildcard (Carattere jolly) | Descrizione | Esempio |
---|---|---|
% | Carattere jolly che corrisponde a un numero qualsiasi di caratteri. | Name LIKE 'SQL%' Restituisce true se il Name valore è SQLEngine. Name LIKE '%SQL%' Restituisce true se il Name valore è MySQLEngine. |
_ | Carattere jolly che corrisponde a un singolo carattere. | Name LIKE 'SQL200_' Restituisce true per i valori seguenti Name : SQL2000 SQL2005 Nota: l'espressione restituisce false per SQL200 perché il simbolo _ deve corrispondere esattamente a un carattere nel Name valore. |
[] | Carattere jolly che corrisponde a qualsiasi carattere racchiuso nel set di caratteri. Nota Le parentesi quadre vengono usate anche quando si qualificano i riferimenti alle proprietà MonitoringObject . Per altre informazioni, vedere Definizione di query per gli oggetti di monitoraggio. |
Name LIKE 'SQL200[05]' Restituisce true per i valori seguenti Name :SQL2000 SQL2005 L'espressione restituisce false per SQL2003. |
[^] | Carattere jolly che corrisponde a un carattere che non è racchiuso nel set di caratteri. | Name LIKE 'SQL200[^05]' Restituisce true per SQL2003. L'espressione restituisce false per SQL2000 e SQL2005. |
Confronti di DateTime
Quando si usa un valore DateTime in un'espressione di query, usare il formato DateTime generale (G) per convertire il DateTime
valore in un valore stringa. Ad esempio:
string qStr = "TimeCreated <= '" + myInstant.ToString("G") + "'";
ManagementPackCriteria mpCriteria = new ManagementPackCriteria(qStr);
Convertire tutti i valori di data nel formato G (GMT) per eseguire confronti di stringhe valide.
Confronto tra valori interi ed enumerazioni
Quando si usa un valore di enumerazione integer in un'espressione di query, eseguire il cast del valore di enumerazione a un numero intero.
Ad esempio:
string qStr = "Severity > " + (int)ManagementPackAlertSeverity.Warning;
MonitoringAlertCriteria alertCriteria = new MonitoringAlertCriteria(qStr);