Поделиться через


Поддержка регулярных выражений в System Center Operations Manager

При создании пакетов управления может потребоваться включить сопоставление регулярных выражений в обнаружения и группы. Регулярные выражения также могут потребоваться для сопоставления шаблонов в критериях выражений в мониторах и правилах.

Исходная версия продукта: System Center Operations Manager
Исходный номер базы знаний: 2702651

Operations Manager поддерживает два разных типа регулярных выражений. Чтобы выбрать правильное выражение, необходимо знать, в каком элементе вы работаете. Вычисления членства в группах и фильтры выражений используют разные синтаксисы для сопоставления шаблонов.

Вычисление группы

Вычисление групп использует PERL синтаксис регулярных выражений. По умолчанию сопоставление не учитывает регистр, однако можно указать, что выражение должно быть учитывает регистр с помощью специального атрибута в XML. Дополнительные сведения см. в разделе SimpleCriteriaType.

Вычисление групп находится в пакете управления (MP) всякий Group Calc раз, когда используется модуль. Выражение GroupCalc использует MatchesRegularExpression оператор для создания динамического членства в группах на основе выражений сопоставления шаблонов. Реализация этого оператора передает выражение, найденное в XML-файле dbo.fn_MatchesRegularExpression MP, в имя вызова SQL. Если этот вызов возвращает значение 0, совпадение равно false. Если возвращает значение 1, совпадение имеет значение true.

Внимание

dbo.fn_MatchesRegularExpression Само имя вызова SQL учитывает регистр, поэтому MatchesRegularExpression оператор, используемый в условиях динамического членства в группах, также будет учитывать регистр.

GroupCalc также поддерживает два специальных подэлемента, которые делают абстрактные выражения следующих распространенных запросов стиля regex.

Специальные функции GroupCalc

Вложенный элемент GroupCalc Выражение MP Эквивалент регулярных выражений
ContainsSubstring ^*{O}.*$ (Wherein {O} заменяется подстроки)
MatchesWildcard ? .
MatchesWildcard * .*
MatchesWildcard # [0-9]

Примечание.

Если используется один из этих двух специальных операторов, оценка всегда учитывает регистр.

Критерии сопоставления фильтров выражений

Фильтры выражений, используемые в пакетах управления, используют синтаксис выражения regex платформа .NET Framework. Не все выражения работают. Однако поддерживаются следующие платформа .NET Framework элементы синтаксиса регулярного выражения. Фильтры выражений существуют в пакете управления при использовании модуля Eval выражения.

Синтаксис регулярных выражений Operations Manager

Конструкция Regex Operations Manager
Любой символ .
Символ в диапазоне [ ]
Символ не в диапазоне [^ ]
Начало строки ^
Конец строки $
Or |
Групповой ( )
0 или 1 совпадение ?
0 или более совпадений *
1 или более совпадений +
Точно N совпадений {n}
По крайней мере N совпадений {n,}
Не более N совпадений { , n}
N до M Совпадений {n, m}
Символ новой строки \n
Символ табуляции \t

Примеры регулярных выражений Operations Manager (regex)

Пример 1

Выполните поиск любых совпадений, содержащих одну строку, string1:

^(string1)$

Пример 2

Выполните поиск любых совпадений, содержащих две строки или string1 string2:

^(string1)|^(string2)$

Пример 3

Найдите все совпадения с папками, расположенными рекурсивно, в двух путях папок (/var/lib/string1/* или /var/lib/string2/*):

^(\/var\/lib\/string1\/.*)|^(\/var\/lib\/string2\/.*)$

Пример 4

Выполните поиск любых совпадений, содержащих одну из двух строк, Agent1.contoso.com или Agent2.contoso.com (без учета регистра):

^(?i)(agent1.contoso.com)|(?i)(agent2.contoso.com)$

Выполните поиск любых совпадений, содержащих Agent (без учета регистра):

^(?i)(agent.*)$

Регулярные выражения с помощью пакета SDK

Пакет SDK Operations Manager имеет оператор критериев "Совпадения " для фильтрации объектов. Этот оператор использует те же функции, что MatchesCriteria и в случае GroupCalc, упомянутом ранее.

При использовании пакета SDK для создания выражения критериев для поиска объектов в базе данных Operations Manager допустимы и полезны следующие элементы синтаксиса:

  • Операторы сравнения
  • Подстановочные знаки
  • Значения DateTime
  • Сравнение целых чисел с xml-перечислением

Операторы сравнения

Операторы сравнения можно использовать при создании выражения критериев. Допустимые операторы описаны в следующей таблице.

Операторы сравнения пакетов SDK

Operator Description Пример(ы)
=, == Значение true, если левые и правые операнды равны. Name = 'mymachine.contoso.com'
!=, <> Значение true, если левые и правые операнды неравны. Name != 'mymachine.contoso.com'
> Значение true, если левый операнда больше правого операнда. Severity > 0
< Значение true, если левый операнда меньше правого операнда. Severity < 2
>= Значение true, если левый операнд больше или равен правому операнду. Severity >= 1
<= Значение true, если левый операнда меньше или равен правому операнду. Severity <= 3
LIKE Возвращает значение true, если левый операнд соответствует шаблону, определенному правым операндом. Используйте символы в таблице подстановочных знаков для определения шаблона. Name 'LIKE SQL%'
Возвращает значение true, если Name значение — SQLEngine.

Name LIKE '%SQL%'
Возвращает значение true, если Name значение — MySQLEngine.
СОВПАДЕНИЯ Значение true, если левый операнд соответствует регулярному выражению, определенному правым операндом. Name MATCHES 'SQL*05'
Возвращает значение true, если значение SQL2005.Name
IS NULL Значение true, если значение левого операнда равно NULL. ConnectorId IS NULL
Значение true, если ConnectorId свойство не содержит значения.
IS NOT NULL Значение true, если значение левого операнда не равно NULL. ConnectorId IS NOT NULL
Значение true, если ConnectorId свойство содержит значение.
В Значение true, если значение левого операнда находится в списке значений, определенных правым операндом.

Обратите внимание, что оператор IN действителен только для свойств guid типа.
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002')
Значение true, если значение Id свойства является одним из двух глобальных уникальных идентификаторов, предоставленных в выражении.
И Значение true, если оба операнда слева и справа являются истинными. Name = 'SQL%' AND Description LIKE 'MyData%'
ИЛИ Значение true, если левый или правый операнд имеет значение true. Name = 'SQL%' OR Description LIKE 'MyData%'
Логическое НЕ Возвращает значение true, если правый операнд не имеет значения true. NOT (Name = 'IIS' OR Name = 'SQL')

Подстановочные знаки

В следующей таблице определяются подстановочные знаки, которые можно использовать для создания шаблона при использовании LIKE оператора.

Операторы подстановочных знаков, используемые с оператором LIKE

Подстановочный знак Description Пример
% Подстановочный знак, соответствующий любому количеству символов. Name LIKE 'SQL%'
Возвращает значение true, если Name значение — SQLEngine.

Name LIKE '%SQL%'
Возвращает значение true, если Name значение — MySQLEngine.
_ Подстановочный знак, соответствующий одному символу. Name LIKE 'SQL200_'
Возвращает значение true для следующих Name значений:

SQL2000
SQL2005

Примечание. Выражение вычисляется как false для SQL200 , так как символ _ должен соответствовать ровно одному символу в значении Name .
[] Подстановочный знак, соответствующий любому символу, заключенному в набор символов.

При определении ссылок на свойства MonitoringObject также используются квадратные скобки. Дополнительные сведения см. в разделе "Определение запросов для объектов мониторинга".
Name LIKE 'SQL200[05]'
Возвращает значение true для следующих Name значений:

SQL2000
SQL2005

Выражение оценивается как false для SQL2003.
[^] Подстановочный знак, соответствующий любому символу, который не заключен в набор символов. Name LIKE 'SQL200[^05]'
Значение true для SQL2003.

Выражение оценивается как false для SQL2000 и SQL2005.

Сравнения DateTime

При использовании значения DateTime в выражении запроса используйте общий формат DateTime (G) для преобразования DateTime значения в строковое значение. Например:

string qStr = "TimeCreated <= '" + myInstant.ToString("G") + "'";
ManagementPackCriteria mpCriteria = new ManagementPackCriteria(qStr);

Преобразуйте все значения дат в формат G (GMT), чтобы сделать допустимые сравнения строк.

Сравнение целочисленных значений с перечислениями

При использовании целочисленного значения перечисления в выражении запроса приведение значения перечисления к целочислению.

Например:

string qStr = "Severity > " + (int)ManagementPackAlertSeverity.Warning;
MonitoringAlertCriteria alertCriteria = new MonitoringAlertCriteria(qStr);

Дополнительная информация