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에 대해 false로 Name 평가됩니다. |
[] | 문자 집합에 묶인 문자 하나와 일치하는 와일드카드입니다. 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);