Suporte de expressão regular no System Center Operations Manager
Quando você cria pacotes de gerenciamento, talvez seja necessário incluir correspondência de expressão regular em descobertas e grupos. Expressões regulares também podem ser necessárias para correspondência de padrões em critérios de expressão em monitores e regras.
Versão original do produto: System Center Operations Manager
Número de KB original: 2702651
O Operations Manager dá suporte a dois tipos diferentes de expressões regulares. Você deve saber em qual elemento você está trabalhando para poder escolher a expressão correta. Os filtros de expressão e cálculo de associação de grupo usam sintaxes distintamente diferentes para correspondência de padrões.
Cálculo de grupo
O cálculo de grupo usa PERL
sintaxe de expressão regular. Por padrão, a correspondência é insensível a casos, no entanto, você pode especificar que uma expressão deve ser sensível a casos usando um atributo especial no XML. Para obter mais informações, consulte SimpleCriteriaType.
O cálculo de grupo é encontrado no mp (pacote de gerenciamento) sempre que você usa o Group Calc
módulo. A GroupCalc
expressão usa o MatchesRegularExpression
operador para criar associação de grupo dinâmico com base em expressões de correspondência de padrões. A implementação desse operador passa a expressão encontrada no MP XML para o nome da dbo.fn_MatchesRegularExpression
chamada SQL. Se essa chamada retornar um valor de 0, a correspondência será falsa. Se ele retornar um valor de 1, a correspondência será verdadeira.
Importante
O dbo.fn_MatchesRegularExpression
nome da chamada SQL em si é sensível a casos, portanto, o MatchesRegularExpression
operador usado em critérios dinâmicos de associação de grupo também será sensível a casos.
GroupCalc também dá suporte a dois subelementos especiais que fazem expressões abstratas das seguintes consultas de estilo regex comuns.
Funções especiais groupCalc
Sub elemento GroupCalc | Expressão MP | Regex equivalente |
---|---|---|
ContémSubstring |
^*{O}.*$ (Wherein {O} é substituído pela substring) |
|
MatchWildcard | ? |
. |
MatchWildcard | * |
.* |
MatchWildcard | # |
[0-9] |
Observação
Se um desses dois operadores especiais for usado, a avaliação será sempre sensível a casos.
Critérios de correspondência de filtro de expressão
Os filtros de expressão usados em pacotes de gerenciamento usam .NET Framework sintaxe de expressão regex. Nem todas as expressões funcionam. No entanto, há suporte para os seguintes elementos de sintaxe de expressão regular .NET Framework. Os filtros de expressão existem no pacote de gerenciamento quando você usa o módulo Expression Eval.
Sintaxe regex do Operations Manager
Construir | Regex do Operations Manager |
---|---|
Qualquer caractere | . |
Caractere no intervalo | [ ] |
Caractere não no intervalo | [^ ] |
Início da linha | ^ |
Fim da linha | $ |
Ou | | |
Agrupar | ( ) |
0 ou 1 correspondência | ? |
0 ou mais correspondências | * |
1 ou mais correspondências | + |
Exatamente N corresponde | {n} |
Pelo menos N corresponde | {n, } |
No máximo, N corresponde | { , n} |
Correspondências de N a M | {n, m} |
Novo caractere de linha | \n |
Caractere tab | \T |
Exemplos de regex (expressão regular) do Operations Manager
Exemplo 1
Pesquise as correspondências que contenham uma única cadeia de caracteres: string1
^(string1)$
Exemplo 2
Pesquise as correspondências que contenham uma das duas cadeias de caracteres string1
ou string2
:
^(string1)|^(string2)$
Exemplo 3
Pesquise se há correspondências com pastas localizadas recursivamente nos dois caminhos de pasta, (/var/lib/string1/*
ou /var/lib/string2/*
):
^(\/var\/lib\/string1\/.*)|^(\/var\/lib\/string2\/.*)$
Exemplo 4
Procure por correspondências que contenham uma das duas cadeias de caracteres Agent1.contoso.com
ou Agent2.contoso.com
(caso insensível):
^(?i)(agent1.contoso.com)|(?i)(agent2.contoso.com)$
Pesquise se há correspondências que contenham Agent
(caso insensível):
^(?i)(agent.*)$
Expressões regulares via SDK
O SDK do Operations Manager tem um operador de critérios de correspondência para filtrar objetos. Esse operador usa a mesma funcionalidade MatchesCriteria
que no caso GroupCalc mencionado anteriormente.
Quando você usa o SDK para construir uma expressão de critério para encontrar objetos no banco de dados do Operations Manager, os seguintes elementos de sintaxe são válidos e úteis:
- Operadores de comparação
- Caracteres curinga
- Valores datetime
- Inteiro para comparações de Enumeração XML
Operadores de comparação
Você pode usar operadores de comparação ao construir uma expressão de critério. Os operadores válidos são descritos na tabela a seguir.
Operadores de comparação do SDK
Operador | Descrição | Exemplos |
---|---|---|
=, = = | Avalia como true se os operandos esquerdo e direito são iguais. | Name = 'mymachine.contoso.com' |
!=, <> | Avalia como verdadeiro se os operandos esquerdo e direito são desiguais. | Name != 'mymachine.contoso.com' |
> | Avalia como verdadeiro se o operando esquerdo for maior que o operando direito. | Severity > 0 |
< | Avalia como true se o operando esquerdo for menor que o operando direito. | Severity < 2 |
>= | Avalia como verdadeiro se o operando esquerdo for maior ou igual ao operando direito. | Severity >= 1 |
<= | Avalia como true se o operando esquerdo for menor ou igual ao operando direito. | Severity <= 3 |
COMO | Avalia como true se o operando esquerdo corresponder ao padrão definido pelo operando direito. Use os caracteres na tabela curinga para definir o padrão. | Name 'LIKE SQL%' Avalia como true se o Name valor for SQLEngine. Name LIKE '%SQL%' Avalia como true se o Name valor for MySQLEngine. |
CORRESPONDÊNCIAS | Avalia como true se o operando esquerdo corresponder à expressão regular definida pelo operando direito. | Name MATCHES 'SQL*05' Avalia como true se o Name valor for SQL2005. |
IS NULL | Avalia como true se o valor do operando esquerdo for nulo. | ConnectorId IS NULL Avalia como true se a ConnectorId propriedade não contiver um valor. |
NÃO É NULO | Avalia como true se o valor do operando esquerdo não for nulo. | ConnectorId IS NOT NULL Avalia como true se a ConnectorId propriedade contém um valor. |
IN | Avalia como true se o valor do operando esquerdo estiver na lista de valores definidos pelo operando direito. Nota O operador IN é válido para uso somente com propriedades do tipo Guid. |
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002') Avalia como true se o valor da Id propriedade é um dos dois identificadores globalmente exclusivos fornecidos na expressão. |
E | Avalia como true se os operandos esquerdo e direito são ambos verdadeiros. | Name = 'SQL%' AND Description LIKE 'MyData%' |
OU | Avalia como true se o operando esquerdo ou direito for verdadeiro. | Name = 'SQL%' OR Description LIKE 'MyData%' |
NÃO | Avalia como verdadeiro se o operando certo não for verdadeiro. | NOT (Name = 'IIS' OR Name = 'SQL') |
Curingas
A tabela a seguir define os caracteres curinga que você pode usar para construir um padrão ao usar o LIKE
operador.
Operadores curinga usados com operador LIKE
Curinga | Descrição | Exemplo |
---|---|---|
% | Um curinga que corresponde a qualquer número de caracteres. | Name LIKE 'SQL%' Avalia como true se o Name valor for SQLEngine. Name LIKE '%SQL%' Avalia como true se o Name valor for MySQLEngine. |
_ | Um curinga que corresponde a um único caractere. | Name LIKE 'SQL200_' Avalia como true para os seguintes Name valores:SQL2000 SQL2005 Observação: a expressão avalia como false para SQL200 porque o símbolo _ deve corresponder exatamente a um caractere no Name valor. |
[] | Um curinga que corresponde a qualquer caractere que esteja fechado no conjunto de caracteres. Nota Colchetes também são usados ao qualificar referências às propriedades MonitoringObject . Para obter mais informações, confira Definindo consultas para objetos de monitoramento. |
Name LIKE 'SQL200[05]' Avalia como true para os seguintes Name valores:SQL2000 SQL2005 A expressão é avaliada como false para SQL2003. |
[^] | Um curinga que corresponde a qualquer caractere que não esteja fechado no conjunto de caracteres. | Name LIKE 'SQL200[^05]' Avalia como true para SQL2003. A expressão é avaliada como false para SQL2000 e SQL2005. |
Comparações datetime
Ao usar um valor DateTime em uma expressão de consulta, use o formato geral DateTime (G) para converter o DateTime
valor em um valor de cadeia de caracteres. Por exemplo:
string qStr = "TimeCreated <= '" + myInstant.ToString("G") + "'";
ManagementPackCriteria mpCriteria = new ManagementPackCriteria(qStr);
Converta todos os valores de data no formato G (GMT) para fazer comparações de cadeia de caracteres válidas.
Comparação de valor inteiro com enumerações
Quando você usa um valor de enumeração inteiro em uma expressão de consulta, converta o valor de enumeração como um inteiro.
Por exemplo:
string qStr = "Severity > " + (int)ManagementPackAlertSeverity.Warning;
MonitoringAlertCriteria alertCriteria = new MonitoringAlertCriteria(qStr);