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

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

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

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

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

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

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

Важно!

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

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

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

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

Примечание.

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

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

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

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

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

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

Пример 1

Найдите все совпадения, содержащие одну строку, string1:

^(string1)$

Пример 2

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

^(string1)|^(string2)$

Пример 3

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

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

Пример 4

Выполните поиск любых совпадений, содержащих одну из двух строк или Agent1.contoso.comAgent2.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

Оператор Описание Примеры
=, == Вычисляет значение 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 , Name если значение равно SQL2005.
IS NULL Возвращает значение true , если значение левого операнда равно NULL. ConnectorId IS NULL
Вычисляет значение true , ConnectorId если свойство не содержит значения.
IS NOT NULL Возвращает значение true , если значение левого операнда не равно NULL. ConnectorId IS NOT NULL
Возвращает значение true , ConnectorId если свойство содержит значение .
IN Возвращает значение true , если значение левого операнда находится в списке значений, определенных правым операндом.

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

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

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

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

Подстановочный знак Описание Пример
% Подстановочный знак, соответствующий любому количеству символов. 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 (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);

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