System Center Operations Manager의 정규식 지원

관리 팩을 작성할 때 검색 및 그룹에 정규식 일치를 포함해야 할 수 있습니다. 모니터 및 규칙의 식 기준에서 패턴 일치에 정규식이 필요할 수도 있습니다.

원래 제품 버전: System Center Operations Manager
원본 KB 번호: 2702651

Operations Manager는 두 가지 형식의 정규식을 지원합니다. 올바른 식을 선택하려면 작업 중인 요소를 알아야 합니다. 그룹 멤버 자격 계산 및 식 필터는 패턴 일치를 위해 뚜렷하게 다른 구문을 사용합니다.

그룹 계산

그룹 계산은 정규식 구문을 사용합니다 PERL . 기본적으로 일치는 대/소문자를 구분하지 않습니다. 그러나 XML에서 특수 특성을 사용하여 식이 대/소문자를 구분해야 한다고 지정할 수 있습니다. 자세한 내용은 SimpleCriteriaType을 참조하세요.

그룹 계산은 모듈을 사용할 Group Calc 때마다 MP(관리 팩)에서 찾을 수 있습니다. 식은 GroupCalc 연산자를 MatchesRegularExpression 사용하여 패턴 일치 식에 따라 동적 그룹 멤버 자격을 만듭니다. 이 연산자의 구현은 MP XML dbo.fn_MatchesRegularExpression 에 있는 식을 SQL 호출 이름으로 전달합니다. 이 호출이 값 0을 반환하면 일치 항목은 false입니다. 값 1을 반환하면 일치 항목이 true입니다.

중요

dbo.fn_MatchesRegularExpression SQL 호출 이름 자체는 대/소문자를 구분하므로 MatchesRegularExpression 동적 그룹 멤버 자격 조건에 사용되는 연산자도 대/소문자를 구분합니다.

GroupCalc는 다음과 같은 일반적인 정규식 스타일 쿼리의 추상 식을 만드는 두 개의 특수 하위 요소도 지원합니다.

GroupCalc 특수 함수

GroupCalc 하위 요소 MP 식 Regex 등가
ContainsSubstring ^*{O}.*$ (여기서 {O} 는 부분 문자열로 바뀝니다.)
MatchesWildcard ? .
MatchesWildcard * .*
MatchesWildcard # [0-9]

참고

이러한 두 특수 연산자 중 하나를 사용하는 경우 평가는 항상 대/소문자를 구분합니다.

식 필터 일치 조건

관리 팩에 사용되는 식 필터는 .NET Framework 정규식 구문을 사용합니다. 모든 식이 작동하는 것은 아닙니다. 그러나 다음 .NET Framework 정규식 구문 요소가 지원됩니다. 식 필터는 식 Eval 모듈을 사용할 때 관리 팩에 있습니다.

Operations Manager regex 구문

생성 Operations Manager 정규식
모든 문자 .
범위 내 문자 [ ]
범위가 아닌 문자 [^ ]
줄의 시작 ^
줄 끝 $
또는 |
그룹 ( )
0 또는 1 일치 ?
0개 이상의 일치 항목 *
1개 이상의 일치 항목 +
정확히 N 일치 {n}
N개 이상의 일치 항목 {n, }
최대 N 일치 항목 { , n}
N 대 M 일치 항목 {n, m}
새 줄 문자 \n
탭 문자 \T

Operations Manager 정규식(정규식) 예제

예 1

단일 문자열 string1이 포함된 일치 항목을 검색합니다.

^(string1)$

예 2

두 문자열 또는 string2중 하나를 포함하는 일치 항목을 검색합니다. string1

^(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를 통한 정규식

Operations Manager SDK에는 개체 필터링을 위한 일치 조건 연산자가 있습니다. 이 연산자는 앞에서 언급한 GroupCalc 사례와 동일한 기능을 MatchesCriteria 사용합니다.

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
처럼 왼쪽 피연산자는 오른쪽 피연산자에서 정의한 패턴과 일치하면 true 로 평가됩니다. 와일드카드 테이블의 문자를 사용하여 패턴을 정의합니다. Name 'LIKE SQL%'
값이 SQLEngine이면 Nametrue로 평가됩니다.

Name LIKE '%SQL%'
값이 MySQLEngine이면 Nametrue로 평가됩니다.
일치 항목 왼쪽 피연산자를 오른쪽 피연산자에서 정의한 정규식과 일치하면 true 로 계산됩니다. Name MATCHES 'SQL*05'
값이 SQL2005 경우 Nametrue로 평가됩니다.
IS NULL 왼쪽 피연산자의 값이 null이면 true 로 평가됩니다. ConnectorId IS NULL
속성에 값이 ConnectorId 없으면 true로 평가됩니다.
가 NULL이 아님 왼쪽 피연산자의 값이 null 이 아닌 경우 true로 평가됩니다. ConnectorId IS NOT NULL
속성에 값이 ConnectorId 포함되어 있으면 true로 평가됩니다.
IN 왼쪽 피연산자의 값이 오른쪽 피연산자에서 정의한 값 목록에 있으면 true 로 평가됩니다.

참고IN 연산자는 Guid 형식의 속성에서만 사용할 수 있습니다.
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002')
속성 값 Id 이 식에 제공된 두 개의 전역적으로 고유한 식별자 중 하나이면 true로 평가됩니다.
그리고 왼쪽 피연산자와 오른쪽 피연산자 모두 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%'
값이 SQLEngine이면 Nametrue로 평가됩니다.

Name LIKE '%SQL%'
값이 MySQLEngine이면 Nametrue로 평가됩니다.
_ 단일 문자와 일치하는 와일드카드입니다. Name LIKE 'SQL200_'
다음 값에 대해 true로 평가됩니다.Name

SQL2000
SQL2005

참고: 식은 SQL200에 대해 false로 계산됩니다. 기호 _가 값의 문자 하나와 정확히 일치해야 하기 때문 Name 입니다.
[] 문자 집합에 묶인 문자 하나와 일치하는 와일드카드입니다.

참고 대괄호는 MonitoringObject 속성에 대한 참조를 한정할 때도 사용됩니다. 자세한 내용은 모니터링 개체에 대한 쿼리 정의를 참조하세요.
Name LIKE 'SQL200[05]'
다음 값에 대해 true로 평가됩니다.Name

SQL2000
SQL2005

식은 SQL2003 대해 false로 계산됩니다.
[^] 문자 집합에 묶이지 않은 문자 하나와 일치하는 와일드카드입니다. Name LIKE 'SQL200[^05]'
SQL2003대해 true로 평가됩니다.

식은 SQL2000 SQL2005 대해 false로 평가됩니다.

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);

추가 정보