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 expresión y cálculo de pertenencia a grupos usan sintaxis distintas para la coincidencia de patrones.

Cálculo de grupos

El cálculo de grupos 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 entre mayúsculas y minúsculas mediante un atributo especial en el XML. Para obtener más información, vea SimpleCriteriaType.

El cálculo de grupos se encuentra en el módulo de administración (MP) cada vez que se usa el Group Calc módulo. La GroupCalc expresión usa el MatchesRegularExpression operador para crear una pertenencia dinámica a grupos basada en 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 la dbo.fn_MatchesRegularExpression 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 la llamada SQL distingue mayúsculas de minúsculas, por lo que el MatchesRegularExpression operador usado en los criterios dinámicos de pertenencia a grupos también distingue mayúsculas de minúsculas.

GroupCalc también admite dos subelementos especiales que realizan expresiones abstractas de las siguientes consultas de estilo regex comunes.

Funciones especiales groupcalc

Subelemento GroupCalc Expresión DE MP Equivalente de Regex
ContainsSubstring ^*{O}.*$ (Wherein {O} se reemplaza por la subcadena)
MatchesWildcard ? .
MatchesWildcard * .*
MatchesWildcard # [0-9]

Nota:

Si se usa cualquiera de estos dos operadores especiales, la evaluación siempre distingue mayúsculas de minúsculas.

Criterios de coincidencia de filtro 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 expresión regular de .NET Framework. Los filtros de expresión existen en el módulo de administración cuando se usa el módulo Expression Eval.

Sintaxis regex de Operations Manager

Construir Operations Manager regex
Cualquier carácter .
Carácter en el intervalo [ ]
Carácter que no está en el intervalo [^ ]
Principio de la línea ^
Final de la línea $
O bien |
Group ( )
0 o 1 coincidencia ?
0 o más coincidencias *
1 o más coincidencias +
Coincidencias exactas de N {n}
Al menos N coincidencias {n, }
A lo sumo N coincidencias { , n}
Coincidencias de N a M {n, m}
Nuevo carácter de 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 coincidencias que contengan cualquiera de las dos cadenas, string1 o string2:

^(string1)|^(string2)$

Ejemplo 3

Busque las coincidencias 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 las coincidencias que contengan cualquiera de las dos cadenas o Agent1.contoso.comAgent2.contoso.com (sin distinción entre mayúsculas y minúsculas):

^(?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 Matches criteria 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 enumeración de entero a 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

Operador Descripción Ejemplos
=, == 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
COMO 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 de 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 se 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.
NO ES 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.
EN 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%'
OR 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')

Caracteres comodín

En la tabla siguiente se definen los caracteres comodín que se pueden usar para construir un patrón cuando se usa el LIKE operador .

Operadores de caracteres comodín usados con el operador LIKE

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 del Name valor.
[] Carácter comodín que coincide con cualquier carácter incluido en el conjunto de caracteres.

Nota Los corchetes también se usan al calificar las referencias a las propiedades MonitoringObject . Para obtener más información, consulte Definición de 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 conjunto 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 use 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);

Más información