정규식 로그 파서
개요
구조가 더 복잡한 텍스트 로그 유형의 경우, 다음을 사용할 수 있습니다 regex 파서를 선택합니다.
설정은 regex 파서는 정규식의 명명된 그룹을 사용하여 각 텍스트 라인에서 필드 값을 추출합니다. grok 구문(예: %{PATTERN_NAME:field_name})을 사용하여 Panther에서 제공하는 내장 패턴을 활용하거나 직접 정의한 패턴을 사용해 복잡한 표현식을 구성할 수 있습니다.
Panther의 로그 프로세서는 RE2 구문 을(를) 정규식에 사용합니다. RE2 다른 정규식 엔진에서 흔히 사용하는 일부 연산(예: lookbehind)을 지원하지 않습니다. 다른 시스템에서 표현식이나 grok 패턴을 복사/붙여넣기할 때 반드시 확인하십시오.
예를 들어 텍스트와 일치시키려면
2020-10-10T14:32:05 [[email protected]] [DEBUG] "" Something when wrong다음 패턴으로 이 grok 구문을 사용할 수 있습니다:
%{NOTSPACE:timestamp} \[%{WORD:service}@%{DATA:ip}\] \[%{WORD:log_level}\] %{GREEDYDATA:message}이는 대략 다음의 '원시' 정규식과 동일합니다:
(?P<timestamp>\S+) \[(?P<service>\w+)@(?P<ip>.*?)\] \[(?P<log_level>\w+)\] (?P<message>.*)정규식을 사용한 예
다음을 사용하여 regex 파서를 사용해 Juniper.Audit 로그 유형을 정의하겠습니다. Panther는 이미 이 로그들을 기본적으로 지원하지만여기서는 형태가 가변적이고 충돌하는 양식을 가지므로 다음을 사용해야만 '해결'될 수 있기 때문에 사용합니다 regex 파서를 선택합니다.
의 샘플 로그는: Juniper.Audit 입니다
Jan 22 16:14:23 my-jwas [mws-audit][INFO] [mykonos] [10.10.0.117] Logged in successfully
Jan 23 19:16:22 my-jwas [mws-audit][INFO] [ea77722a8516b0d1135abb19b1982852] Deactivate response 1832840420318015488
Feb 7 20:29:51 my-jwas [mws-audit][INFO] [mykonos] [10.10.0.113] Login failed. Attempt: 1
Feb 14 19:02:54 my-jwas [mws-audit][INFO][mykonos] Changed configuration parameters: services.spotlight.enabled, services.spotlight.server_address다음은 를 사용해 이러한 로그에 대한 로그 스키마를 정의하는 방법입니다 regex:
Panther 콘솔에서는 다음을 따릅니다 사용자 지정 스키마를 수동으로 생성하는 방법 안내을 선택하고, Regex 파서를 선택합니다.

다음 스키마 작성 섹션(위 스크린샷에 표시된 파서 섹션 아래), 우리는 필드를 정의합니다:
내장된 regex 패턴 참조
다음 표는 사용할 수 있는 Panther 내장 정규식 패턴을 자세히 설명합니다.
일반
DATA
.*?
GREEDYDATA
.*
NOTSPACE
\S+
SPACE
\s*
WORD
\b\w+\b
QUOTEDSTRING
"(?:\.|[^\"]+)+"|""|'(?:\.|[^\']+)+'|''
HEXDIGIT
[0-9a-fAF]
UUID
%{HEXDIGIT}{8}-(?:%{HEXDIGIT}{4}-){3}%{HEXDIGIT}{12}
숫자
INT
[+-]?(?:[0-9]+)
BASE10NUM
[+-]?(?:[0-9]+(?:.[0-9]+)?)|.[0-9]+
NUMBER
%{BASE10NUM}
BASE16NUM
(?:0[xX])?%{HEXDIGIT}+
POSINT
\b[1-9][0-9]*\b
NONNEGINT
\b[0-9]+\b
네트워크
CISCOMAC
(?:[A-Fa-f0-9]{4}.){2}[A-Fa-f0-9]{4}
WINDOWSMAC
(?:[A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2}
COMMONMAC
(?:[A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}
MAC
%{CISCOMAC}|%{WINDOWSMAC}|%{COMMONMAC}
IPV6
\b(?:(?:(?:%{HEXDIGIT}{1,4}:){7}(?:%{HEXDIGIT}{1,4}|:))|(?:(?:%{HEXDIGIT}{1,4}:){6}(?::%{HEXDIGIT}{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:%{HEXDIGIT}{1,4}:){5}(?:(?:(?::%{HEXDIGIT}{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|((%{HEXDIGIT}{1,4}:){4}(((:%{HEXDIGIT}{1,4}){1,3})|((:%{HEXDIGIT}{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|((%{HEXDIGIT}{1,4}:){3}(((:%{HEXDIGIT}{1,4}){1,4})|((:%{HEXDIGIT}{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|((%{HEXDIGIT}{1,4}:){2}(((:%{HEXDIGIT}{1,4}){1,5})|((:%{HEXDIGIT}{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|((%{HEXDIGIT}{1,4}:){1}(((:%{HEXDIGIT}{1,4}){1,6})|((:%{HEXDIGIT}{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:%{HEXDIGIT}{1,4}){1,7})|((:%{HEXDIGIT}{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\b
IPV4INT
25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9]
IPV4
\b(?:(?:%{IPV4INT}).){3}(?:%{IPV4INT})\b
IP
%{IPV6}|%{IPV4}
HOSTNAME
\b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(.?|\b)
IPORHOST
%{IP}|%{HOSTNAME}
HOSTPORT
%{IPORHOST}:%{POSINT}
URI
USERNAME
[a-zA-Z0-9._-]+
UNIXPATH
(?:/[\w_%!$@:.,-]?/?)(\S+)?
WINPATH
(?:[A-Za-z]:|\)(?:\[^\?])+
PATH
(?:%{UNIXPATH}|%{WINPATH})
TTY
(?:/dev/(pts|tty([pq])?)(\w+)?/?(?:[0-9]+))
URIPROTO
[A-Za-z]+(?:+[A-Za-z+]+)?
URIHOST
%{IPORHOST}(?::%{POSINT})?
URIPATH
(?:/[A-Za-z0-9$.+!*'(){},~:;=@#%_-]*)+
URIPARAM
?[A-Za-z0-9$.+!*'|(){},~@#%&/=:;_?-[]<>]*
URIPATHPARAM
%{URIPATH}(?:%{URIPARAM})?
URI
%{URIPROTO}://(?:%{USER}(?::[^@]*)?@)?(?:%{URIHOST})?(?:%{URIPATHPARAM})?
타임스탬프
MONTH
\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\b MONTHNUM 0?[1-9]|1[0-2]
MONTHNUM
0?[1-9]|1[0-2]
MONTHNUM2
0[1-9]|1[0-2]
MONTHDAY
(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9]
DAY
\b(?:Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?|Sun(?:day)?)\b
YEAR
(?:\d\d){1,2}
HOUR
2[0123]|[01]?[0-9]
MINUTE
[0-5][0-9]
SECOND
(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?
KITCHEN
%{HOUR}:%{MINUTE}
TIME
%{HOUR}:%{MINUTE}:%{SECOND}
DATE_US
%{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}
DATE_EU
%{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}
ISO8601_TIMEZONE
(?:Z|[+-]%{HOUR}(?::?%{MINUTE}))
ISO8601_SECOND
(?:%{SECOND}|60)
TIMESTAMP_ISO8601
%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?
DATE
%{DATE_US}|%{DATE_EU}
DATETIME
%{DATE}[- ]%{TIME}
TZ
[A-Z]{3}
TZOFFSET
[+-]\d{4}
TIMESTAMP_RFC822
%{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ}
TIMESTAMP_RFC2822
%{DAY}, %{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{ISO8601_TIMEZONE}
TIMESTAMP_OTHER
%{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR}
TIMESTAMP_EVENTLOG
%{YEAR}%{MONTHNUM2}%{MONTHDAY}%{HOUR}%{MINUTE}%{SECOND}
SYSLOGTIMESTAMP
%{MONTH} +%{MONTHDAY} %{TIME}
HTTPDATE
%{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{TZOFFSET}
별칭
NS
NOTSPACE
QS
QUOTEDSTRING
HOST
HOSTNAME
PID
POSINT
USER
USERNAME
Last updated
Was this helpful?

