Suporte a expressões regulares no System Center Operations Manager
Ao criar pacotes de gerenciamento, talvez seja necessário incluir a correspondência de expressões regulares 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 original do KB: 2702651
O Operations Manager dá suporte a dois tipos diferentes de expressões regulares. Você deve saber em qual elemento está trabalhando para poder escolher a expressão correta. O cálculo de associação de grupo e os filtros de expressão 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 não diferencia maiúsculas de minúsculas, no entanto, você pode especificar que uma expressão deve diferenciar maiúsculas de minúsculas usando um atributo especial no XML. Para obter mais informações, consulte SimpleCriteriaType.
O cálculo de grupo é encontrado em seu pacote de gerenciamento (MP) 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
próprio nome da chamada SQL diferencia maiúsculas de minúsculas, portanto, o MatchesRegularExpression
operador usado nos critérios de associação de grupo dinâmico também diferencia maiúsculas de minúsculas.
O GroupCalc também dá suporte a dois subelementos especiais que fazem expressões abstratas das seguintes consultas comuns de estilo regex.
Funções especiais do GroupCalc
Subelemento GroupCalc | Expressão MP | Equivalente Regex |
---|---|---|
ContémSubstring | ^*{O}.*$ (Em que {O} é substituído pela substring) |
|
MatchesCuringa | ? |
. |
MatchesCuringa | * |
.* |
MatchesCuringa | # |
[0-9] |
Observação
Se um desses dois operadores especiais for usado, a avaliação sempre diferencia maiúsculas de minúsculas.
Critérios de correspondência de filtro de expressão
Os filtros de expressão usados em pacotes de gerenciamento usam a sintaxe de expressão regex do .NET Framework. Nem todas as expressões funcionam. No entanto, há suporte para os seguintes elementos de sintaxe de expressão regular do .NET Framework. Os filtros de expressão existem em seu pacote de gerenciamento quando você usa o módulo Avaliação de Expressão.
Sintaxe regex do Operations Manager
Constructo | Regex do Operations Manager |
---|---|
Qualquer caractere | . |
Personagem no intervalo | [ ] |
Personagem fora do alcance | [^ ] |
Início de linha | ^ |
Término de linha | $ |
Ou | | |
Grupo | ( ) |
0 ou 1 partida | ? |
0 ou mais partidas | * |
1 ou mais partidas | + |
Exatamente N correspondências | {n} |
Pelo menos N partidas | {n,} |
No máximo N partidas | { , n} |
N a M Partidas | {n, m} |
Caractere de nova linha | \n |
Caractere de tabulação | \t |
Exemplos de expressões regulares (regex) do Operations Manager
Exemplo 1
Pesquise por correspondências que contenham uma única string, string1
:
^(string1)$
Exemplo 2
Pesquise por quaisquer correspondências que contenham uma das duas strings string1
ou string2
:
^(string1)|^(string2)$
Exemplo 3
Pesquise por correspondências para pastas localizadas recursivamente nos dois caminhos de pasta, (/var/lib/string1/*
ou /var/lib/string2/*
):
^(\/var\/lib\/string1\/.*)|^(\/var\/lib\/string2\/.*)$
Exemplo 4
Pesquise todas as correspondências que contenham uma das duas cadeias de caracteres ou Agent2.contoso.com
(sem distinção entre maiúsculas e minúsculasAgent1.contoso.com
):
^(?i)(agent1.contoso.com)|(?i)(agent2.contoso.com)$
Pesquise todas as correspondências que contenham Agent
(sem distinção entre maiúsculas e minúsculas):
^(?i)(agent.*)$
Expressões regulares via SDK
O SDK do Operations Manager tem um operador de critérios Matches para filtrar objetos. Esse operador usa a mesma funcionalidade MatchesCriteria
do caso GroupCalc mencionado anteriormente.
Quando você usa o SDK para construir uma expressão de critérios para localizar 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
- Comparações de enumeração de inteiro para 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 de SDK
Operador | Descrição | Exemplo(s) |
---|---|---|
=, == | Avalia como verdadeiro se os operandos esquerdo e direito forem iguais. | Name = 'mymachine.contoso.com' |
!=, <> | Avalia como verdadeiro se os operandos esquerdo e direito forem desiguais. | Name != 'mymachine.contoso.com' |
> | Avalia como verdadeiro se o operando esquerdo for maior que o operando direito. | Severity > 0 |
< | Avalia como verdadeiro 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 verdadeiro se o operando esquerdo for menor ou igual ao operando direito. | Severity <= 3 |
LIKE | Avalia como verdadeiro 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 verdadeiro 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. |
É NULO | 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 | Será avaliado como verdadeiro se o valor do operando esquerdo não for nulo. | ConnectorId IS NOT NULL Avalia como true se a ConnectorId propriedade contiver um valor. |
IN | Avalia como verdadeiro se o valor do operando esquerdo estiver na lista de valores definidos pelo operando direito. Observação 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 for um dos dois identificadores globalmente exclusivos fornecidos na expressão. |
E | Avalia como verdadeiro se os operandos esquerdo e direito forem verdadeiros. | Name = 'SQL%' AND Description LIKE 'MyData%' |
OR | Avalia como verdadeiro se o operando esquerdo ou direito for verdadeiro. | Name = 'SQL%' OR Description LIKE 'MyData%' |
NOT | Avalia como verdadeiro se o operando correto 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 o 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 Nota: A expressão é avaliada 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 entre o conjunto de caracteres. Observação Os colchetes também são usados ao qualificar referências às propriedades MonitoringObject . Para obter mais informações, consulte 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 incluído no conjunto de caracteres. | Name LIKE 'SQL200[^05]' É avaliado como verdadeiro para SQL2003. A expressão é avaliada como false para SQL2000 e SQL2005. |
Comparações de data e hora
Ao usar um valor DateTime em uma expressão de consulta, use o formato DateTime geral (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 para o formato G (GMT) para fazer comparações de cadeia de caracteres válidas.
Comparação de valor inteiro com enumerações
Ao usar um valor de enumeração inteiro em uma expressão de consulta, converta o valor de enumeração em um inteiro.
Por exemplo:
string qStr = "Severity > " + (int)ManagementPackAlertSeverity.Warning;
MonitoringAlertCriteria alertCriteria = new MonitoringAlertCriteria(qStr);