matchsig

필드의 문자열 값이 지정된 패턴 그룹에 포함되는지 확인하고, 매칭 결과에 따라 레코드를 필터링합니다.

명령어 속성

항목설명
명령어 유형가공 쿼리
필요 권한없음
라이선스 사용량해당 없음
병렬 실행지원
분산 실행수집 노드에서 실행 (mapper)

문법

matchsig [guid=STR] [name=STR] field=STR [invert=BOOL] [verify=BOOL]

위 문법에서 name은 4.0.2609.0부터 사용할 수 있습니다.

옵션

guid=STR
매칭에 사용할 패턴 그룹의 GUID입니다. 5.0 계열(5.0.2605.2까지)에서는 그룹을 지정하는 유일한 방법입니다. 4.0 계열(4.0.2609.0 이상)에서는 name과 함께 사용할 수 없으며, guid 또는 name 옵션 중 하나를 반드시 지정해야 합니다.
name=STR
매칭에 사용할 패턴 그룹의 이름입니다(guid와 함께 사용할 수 없음). guid 또는 name 옵션 중 하나를 반드시 지정해야 합니다. 이 옵션은 4.0.2609.0부터 사용할 수 있으며, 5.0 계열(5.0.2605.2까지)에서는 사용할 수 없습니다.
field=STR
패턴 매칭 대상 문자열 필드 이름
invert=BOOL
t로 지정하면 패턴 그룹에 매칭되지 않는 레코드만 출력합니다. (기본값: f)
verify=BOOL
f로 지정하면 파싱 단계에서 패턴 그룹 유효성 검사를 생략합니다. (기본값: t)

입력 필드

필드타입필수 여부설명
field 옵션으로 지정한 필드문자열필수패턴 매칭 대상 문자열. 값이 null인 경우 매칭되지 않은 것으로 처리합니다.

출력 필드

입력 레코드의 필드를 그대로 전달합니다. 패턴이 일치한 레코드에는 다음 필드가 추가됩니다.

필드타입설명
_matchsig_result배열일치한 패턴 목록. 패턴마다 rule·expr·expr2 값을 담은 객체가 포함됩니다

invert=t를 지정하면 출력되는 레코드는 매칭되지 않은 레코드이므로 이 필드가 추가되지 않습니다.

오류 코드

파싱 오류
오류 코드메시지설명
300001matchsig 명령어에 유효한 guid 옵션을 지정하세요.guid 옵션 값이 유효한 GUID 형식이 아닌 경우. 5.0 계열(5.0.2605.2까지)에서는 guid 옵션을 지정하지 않은 경우에도 이 코드로 보고됩니다(4.0 계열은 4.0.2609.0부터 누락 시 300052로 분리됨)
300002matchsig 커맨드의 field 옵션을 입력하세요.field 옵션이 누락된 경우
300003패턴 그룹을 찾을 수 없습니다. 정책 동기화 상태를 점검하세요.name 옵션(4.0.2609.0부터 사용 가능)으로 패턴 그룹을 조회하는 중 오류가 발생한 경우. guid로 지정한 패턴 그룹이 없는 경우는 verify=t이더라도 파싱 단계에서 이 오류로 보고되지 않습니다
300052matchsig 명령어에 guid 또는 name 옵션을 지정하세요.guid와 name 옵션을 모두 지정하지 않은 경우. 4.0.2609.0부터 사용할 수 있는 name 옵션에 따른 코드로, 5.0 계열(5.0.2605.2까지)에는 해당하지 않습니다
300053name에 해당하는 패턴 그룹이 없습니다.name 옵션에 지정한 이름의 패턴 그룹이 존재하지 않는 경우. 4.0.2609.0부터 사용할 수 있는 name 옵션에 따른 코드로, 5.0 계열(5.0.2605.2까지)에는 해당하지 않습니다
300054동일한 이름의 패턴 그룹이 여러 개 존재합니다.name 옵션에 지정한 이름의 패턴 그룹이 여러 개 존재하는 경우. 4.0.2609.0부터 사용할 수 있는 name 옵션에 따른 코드로, 5.0 계열(5.0.2605.2까지)에는 해당하지 않습니다
300055matchsig 명령어에는 guid 또는 name 옵션 중 하나만 지정하세요.guid와 name 옵션을 동시에 지정한 경우. 4.0.2609.0부터 사용할 수 있는 name 옵션에 따른 코드로, 5.0 계열(5.0.2605.2까지)에는 해당하지 않습니다
런타임 오류
오류 코드메시지설명
-pattern group not found: <guid>실행을 시작하는 시점에 지정한 GUID에 해당하는 패턴 그룹을 찾을 수 없는 경우(정식 오류 코드 없음). verify=f로 파싱 단계 검사를 생략해도 발생합니다

설명

matchsig 명령어는 입력 레코드에서 지정된 필드의 문자열 값이 패턴 그룹에 정의된 패턴과 매칭되는지 확인합니다. 매칭되는 레코드만 출력하며, invert 옵션을 t로 지정하면 매칭되지 않는 레코드만 출력합니다.

guid 옵션으로 매칭에 사용할 패턴 그룹을 지정합니다. 4.0 계열(4.0.2609.0 이상)에서는 name 옵션도 사용할 수 있으며, 이 경우 해당 이름의 패턴 그룹을 조회하여 GUID를 확인합니다. guid와 name을 동시에 지정하거나 모두 생략하면 오류가 발생하며, name으로 지정한 이름이 존재하지 않거나 여러 그룹에서 중복되는 경우에도 오류가 발생합니다.

필드 값이 null인 경우 매칭되지 않은 것으로 처리합니다. null이 아닌 값은 문자열로 변환하여 패턴 매칭을 수행합니다.

분산 환경에서는 수집 노드에서 필터링을 수행합니다.

사용 예

이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.

  1. 웹 로그의 URI를 패턴 그룹으로 필터링

    table limit=1000 WEB_APACHE_SAMPLE
    | matchsig guid=550e8400-e29b-41d4-a716-446655440000 field=uri
    

    웹 서버 접근 로그의 URI 필드 값이 지정한 패턴 그룹에 매칭되는 레코드만 출력합니다.

  2. 패턴 그룹에 매칭되지 않는 레코드 추출

    table limit=1000 WEB_APACHE_SAMPLE
    | matchsig guid=550e8400-e29b-41d4-a716-446655440000 field=uri invert=t
    

    URI 필드 값이 패턴 그룹에 매칭되지 않는 레코드만 출력합니다.

  3. 이름으로 패턴 그룹 지정 (4.0 계열, 4.0.2609.0 이상)

    table limit=1000 WEB_APACHE_SAMPLE
    | matchsig name=sql_injection field=uri
    

    GUID 대신 이름으로 패턴 그룹을 지정하여 매칭합니다.

변경 이력

대상도입 릴리스
matchsig 명령어소나 4.0 이전 버전
name 옵션4.0.2609.0