Compatibilidad con expresiones regulares en System Center Operations Manager
Al crear módulos de administración, es posible que tenga que incluir la coincidencia de expresiones regulares en detecciones y grupos. Las expresiones regulares también pueden ser necesarias para la coincidencia de patrones en criterios de expresión en monitores y reglas.
Versión original del producto: System Center Operations Manager
Número de KB original: 2702651
Operations Manager admite dos tipos diferentes de expresiones regulares. Debe saber en qué elemento está trabajando para poder elegir la expresión correcta. Los filtros de cálculo y expresión de pertenencia a grupos usan sintaxis distintas para la coincidencia de patrones.
Cálculo de grupos
El cálculo de grupo usa PERL
la sintaxis de expresiones regulares. De forma predeterminada, la coincidencia no distingue mayúsculas de minúsculas, pero puede especificar que una expresión debe distinguir mayúsculas de minúsculas mediante un atributo especial en el XML. Para obtener más información, vea SimpleCriteriaType.
El cálculo del grupo se encuentra en el módulo de administración (MP) siempre que use el Group Calc
módulo. La GroupCalc
expresión usa el MatchesRegularExpression
operador para crear la pertenencia dinámica a grupos en función de las expresiones de coincidencia de patrones. La implementación de este operador pasa la expresión que se encuentra en el XML de MP al nombre de dbo.fn_MatchesRegularExpression
la llamada SQL. Si esta llamada devuelve un valor de 0, la coincidencia es false. Si devuelve un valor de 1, la coincidencia es true.
Importante
El dbo.fn_MatchesRegularExpression
propio nombre de llamada SQL distingue mayúsculas de minúsculas, por lo que el MatchesRegularExpression
operador que se usa en los criterios de pertenencia a grupos dinámicos también distingue entre mayúsculas y minúsculas.
GroupCalc también admite dos subelementos especiales que hacen expresiones abstractas de las siguientes consultas comunes de estilo regex.
Funciones especiales groupCalc
Elemento secundario GroupCalc | Expresión mp | Regex equivalente |
---|---|---|
ContainsSubstring | ^*{O}.*$ (Wherein {O} is replaced by the substring) |
|
MatchesWildcard | ? |
. |
MatchesWildcard | * |
.* |
MatchesWildcard | # |
[0-9] |
Nota:
Si se usan cualquiera de estos dos operadores especiales, la evaluación siempre distingue mayúsculas de minúsculas.
Criterios de coincidencia de filtros de expresión
Los filtros de expresión que se usan en los módulos de administración usan la sintaxis de expresión regex de .NET Framework. No todas las expresiones funcionan. Sin embargo, se admiten los siguientes elementos de sintaxis de expresiones regulares de .NET Framework. Los filtros de expresión existen en el módulo de administración cuando se usa el módulo Expresión Eval.
Sintaxis regex de Operations Manager
Construcción | Expresión regular de Operations Manager |
---|---|
Un carácter cualquiera | . |
Carácter en el intervalo | [ ] |
Carácter no en el intervalo | [^ ] |
Inicio de línea | ^ |
Fin de línea | $ |
O bien, | | |
Grupo | ( ) |
0 o 1 coincidencia | ? |
0 o más coincidencias | * |
1 o más coincidencias | + |
Coincidencias exactas de N | {n} |
Al menos N coincidencias | {n,} |
Como máximo, N coincidencias | { , n} |
Coincidencias de N a M | {n, m} |
Carácter de nueva línea | \n |
Carácter de tabulación | \t |
Ejemplos de expresiones regulares (regex) de Operations Manager
Ejemplo 1
Busque las coincidencias que contengan una sola cadena: string1
^(string1)$
Ejemplo 2
Busque cualquier coincidencia que contenga cualquiera de las dos cadenas o string1
string2
:
^(string1)|^(string2)$
Ejemplo 3
Busque cualquier coincidencia con las carpetas ubicadas de forma recursiva en las dos rutas de acceso de carpeta(/var/lib/string1/*
o /var/lib/string2/*
):
^(\/var\/lib\/string1\/.*)|^(\/var\/lib\/string2\/.*)$
Ejemplo 4
Busque cualquier coincidencia que contenga cualquiera de las dos cadenas o (sin distinción entre mayúsculas y Agent2.contoso.com
minúsculasAgent1.contoso.com
):
^(?i)(agent1.contoso.com)|(?i)(agent2.contoso.com)$
Busque las coincidencias que contengan Agent
(sin distinción entre mayúsculas y minúsculas):
^(?i)(agent.*)$
Expresiones regulares a través del SDK
El SDK de Operations Manager tiene un operador De criterios coincide para filtrar objetos. Este operador usa la misma funcionalidad que MatchesCriteria
en el caso GroupCalc mencionado anteriormente.
Cuando se usa el SDK para construir una expresión de criterios para buscar objetos en la base de datos de Operations Manager, los siguientes elementos de sintaxis son válidos y útiles:
- Operadores de comparación
- Caracteres comodín
- Valores dateTime
- Comparaciones de enteros a enumeración XML
Operadores de comparación
Puede usar operadores de comparación al construir una expresión de criterios. Los operadores válidos se describen en la tabla siguiente.
Operadores de comparación del SDK
Operator | Descripción | Por ejemplo |
---|---|---|
=, == | Se evalúa como true si los operandos izquierdo y derecho son iguales. | Name = 'mymachine.contoso.com' |
!=, <> | Se evalúa como true si los operandos izquierdo y derecho no son iguales. | Name != 'mymachine.contoso.com' |
> | Se evalúa como true si el operando izquierdo es mayor que el operando derecho. | Severity > 0 |
< | Se evalúa como true si el operando izquierdo es menor que el operando derecho. | Severity < 2 |
>= | Se evalúa como true si el operando izquierdo es mayor o igual que el operando derecho. | Severity >= 1 |
<= | Se evalúa como true si el operando izquierdo es menor o igual que el operando derecho. | Severity <= 3 |
LIKE | Se evalúa como true si el operando izquierdo coincide con el patrón definido por el operando derecho. Use los caracteres de la tabla con caracteres comodín para definir el patrón. | Name 'LIKE SQL%' Se evalúa como true si el Name valor es SQLEngine. Name LIKE '%SQL%' Se evalúa como true si el Name valor es MySQLEngine. |
COINCIDENCIAS | Se evalúa como true si el operando izquierdo coincide con la expresión regular definida por el operando derecho. | Name MATCHES 'SQL*05' Se evalúa como true si el Name valor es SQL2005. |
IS NULL | Se evalúa como true si el valor del operando izquierdo es NULL. | ConnectorId IS NULL Se evalúa como true si la ConnectorId propiedad no contiene un valor. |
IS NOT NULL | Se evalúa como true si el valor del operando izquierdo no es NULL. | ConnectorId IS NOT NULL Se evalúa como true si la ConnectorId propiedad contiene un valor. |
IN | Se evalúa como true si el valor del operando izquierdo está en la lista de valores definidos por el operando derecho. Nota El operador IN es válido para su uso solo con propiedades de tipo Guid. |
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002') Se evalúa como true si el valor de la Id propiedad es uno de los dos identificadores únicos globales proporcionados en la expresión. |
Y | Se evalúa como true si los operandos izquierdo y derecho son true. | Name = 'SQL%' AND Description LIKE 'MyData%' |
O BIEN | Se evalúa como true si el operando izquierdo o derecho es true. | Name = 'SQL%' OR Description LIKE 'MyData%' |
NOT | Se evalúa como true si el operando derecho no es true. | NOT (Name = 'IIS' OR Name = 'SQL') |
Comodines
En la tabla siguiente se definen los caracteres comodín que puede usar para construir un patrón cuando se usa el LIKE
operador .
Operadores comodín usados con el operador LIKE
Wildcard (Carácter comodín) | Descripción | Ejemplo |
---|---|---|
% | Carácter comodín que coincide con cualquier número de caracteres. | Name LIKE 'SQL%' Se evalúa como true si el Name valor es SQLEngine. Name LIKE '%SQL%' Se evalúa como true si el Name valor es MySQLEngine. |
_ | Carácter comodín que coincide con un solo carácter. | Name LIKE 'SQL200_' Se evalúa como true para los siguientes Name valores: SQL2000 SQL2005 Nota: La expresión se evalúa como false para SQL200 porque el símbolo _ debe coincidir exactamente con un carácter en el Name valor. |
[] | Carácter comodín que coincide con cualquier carácter que esté incluido en el juego de caracteres. Nota También se usan corchetes al calificar las referencias a las propiedades MonitoringObject . Para obtener más información, vea Definir consultas para objetos de supervisión. |
Name LIKE 'SQL200[05]' Se evalúa como true para los siguientes Name valores:SQL2000 SQL2005 La expresión se evalúa como false para SQL2003. |
[^] | Carácter comodín que coincide con cualquier carácter que no esté incluido en el juego de caracteres. | Name LIKE 'SQL200[^05]' Se evalúa como true para SQL2003. La expresión se evalúa como false para SQL2000 y SQL2005. |
Comparaciones de DateTime
Cuando se usa un valor DateTime en una expresión de consulta, use el formato DateTime general (G) para convertir el DateTime
valor en un valor de cadena. Por ejemplo:
string qStr = "TimeCreated <= '" + myInstant.ToString("G") + "'";
ManagementPackCriteria mpCriteria = new ManagementPackCriteria(qStr);
Convierta todos los valores de fecha en el formato G (GMT) para realizar comparaciones de cadenas válidas.
Comparación de valores enteros con enumeraciones
Cuando se usa un valor de enumeración entero en una expresión de consulta, convierta el valor de enumeración en un entero.
Por ejemplo:
string qStr = "Severity > " + (int)ManagementPackAlertSeverity.Warning;
MonitoringAlertCriteria alertCriteria = new MonitoringAlertCriteria(qStr);