다음을 통해 공유


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입니다.

Important

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

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

GroupCalc 특수 함수

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

참고 항목

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

식 필터 일치 조건

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

Operations Manager regex 구문

구문 Operations Manager regex
임의의 문자 .
범위 내 문자 [ ]
범위가 아닌 문자 [^ ]
줄의 시작 ^
줄의 끝 $
또는 |
그룹 ( )
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에는 개체 필터링을 위한 Matches 조건 연산자가 있습니다. 이 연산자는 앞에서 언급한 GroupCalc 사례와 동일한 기능을 MatchesCriteria 사용합니다.

SDK를 사용하여 Operations Manager 데이터베이스에서 개체를 찾기 위한 조건 식을 생성하는 경우 다음 구문 요소가 유효하고 유용합니다.

  • 비교 연산자
  • 와일드카드 문자
  • DateTime 값
  • 정수와 XML 열거형 비교

비교 연산자

조건 식을 생성할 때 비교 연산자를 사용할 수 있습니다. 유효한 연산자는 다음 표에 설명되어 있습니다.

SDK 비교 연산자

Operator 설명 예시
=, == 왼쪽 피연산자와 오른쪽 피연산자는 같으면 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%'
값이 SQLEngine이면 Name true로 평가됩니다.

Name LIKE '%SQL%'
값이 MySQLEngine이면 Name true로 평가됩니다.
일치 항목 왼쪽 피연산자는 오른쪽 피연산자에서 정의한 정규식과 일치하면 true로 평가됩니다. Name MATCHES 'SQL*05'
값이 SQL2005 경우 Name true로 평가됩니다.
IS NULL 왼쪽 피연산자의 값이 null이면 true로 평가됩니다. ConnectorId IS NULL
속성에 값이 ConnectorId 없으면 true로 평가됩니다.
IS NOT 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이면 Name true로 평가됩니다.

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

SQL2000
SQL2005

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

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

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

자세한 정보