로그 스키마 참조
이 가이드에서는 온보딩 시 YAML 기반 스키마를 작성할 때 사용되는 일반 필드를 찾을 수 있습니다 커스텀 로그 유형 와 룩업 테이블 스키마입니다.
이 페이지 전반에서 필수 필드는 굵게.
LogSchema 필드
각 로그 스키마에는 다음 필드들이 포함됩니다:
필드([]FieldSchema)각 로그 이벤트.
파서(ParserSpec)비-JSON 로그를 JSON으로 변환 및/또는 사용자 지정 변환을 수행할 수 있는 파서
CI/CD 스키마 필드
또한 CI/CD 워크플로를 사용해 정의된 스키마에는 다음 필드들이 포함될 수 있습니다:
스키마(문자열)스키마의 이름
설명(문자열)UI에 표시될 짧은 설명
referenceURL(문자열)로그 구조를 지정하는 외부 문서로의 링크입니다. 종종 제3자 문서로의 링크입니다.
fieldDiscoveryEnabled(부울)다음이 활성화될지 여부를 나타냅니다 필드 발견 이 스키마에 대해 활성화될지 여부.
CI/CD 파이프라인을 통해 스키마를 관리하는 방법에 대한 정보는 Custom Logs 페이지를 참조하세요 Panther Analysis Tool (PAT)을 사용합니다.
예시
아래 예시는 위에서 언급한 CI/CD 필드를 포함합니다.
ParserSpec
ParserSpec는 비-JSON 입력을 JSON으로 변환하기 위해 사용할 파서를 지정합니다. 다음 필드들 중 하나만 지정할 수 있습니다:
fastmatch(FastmatchParser{}): 사용fastmatch파서자세한 내용은 Fastmatch 로그 파서를 확인하세요.
regex(RegexParser{}): 사용regex파서자세한 내용은 Regex 로그 파서.
csv(CSVParser{}): 사용csv파서참고:
columns필드는 동일한 로그 소스에 여러 CSV 스키마가 있는 경우 필수입니다.자세한 내용은 CSV 로그 파서.
script: 사용script파서자세한 내용은 스크립트 로그 파서.
다음의 필드를 탭에서 확인하세요. fastmatch, regex및 csv 에서
파서 fastmatch 필드
match([]string): 로그 라인과 매치할 하나 이상의 패턴입니다. 이 필드는 비어 있을 수 없습니다.emptyValues([]string):null.expandFields(map[string]string): 텍스트 템플릿을 확장하여 주입될 추가 필드들.trimSpace(bool): 각 값의 주변 공백을 잘라냅니다.
파서 regex 필드
match([]string): 로그 라인과 매치할 패턴입니다(문서화를 위해 부분으로 나눌 수 있습니다). 이 필드는 비어 있을 수 없습니다.patternDefinitions(map[string]string): 매치 패턴에서 사용할 추가 명명된 패턴들.emptyValues([]string):null.expandFields(map[string]string): 텍스트 템플릿을 확장하여 주입될 추가 필드들.trimSpace(bool): 각 값의 주변 공백을 잘라냅니다.
파서 csv 필드
delimiter(문자열): 필드 구분 문자로 사용할 문자.hasHeader(bool): 첫 번째 행을 열 이름 추출에 사용합니다(만약columns도 설정된 경우에는 헤더는 단순히 건너뜁니다).columns([]string,required(without hasHeader),비-비어 있음): CSV 파일의 각 열에 대한 이름입니다. 설정하지 않으면 첫 번째 행이 헤더로 사용됩니다.emptyValues([]string):null.trimSpace(bool): 각 값의 주변 공백을 잘라냅니다.expandFields(map[string]string): 텍스트 템플릿을 확장하여 주입될 추가 필드들.
파서 script 필드
function(문자열): Starlark 이벤트당 실행할 함수
FieldSchema
하나의 FieldSchema 필드와 그 값을 정의합니다. 필드는 다음으로 정의됩니다:
이름(문자열)필드의 이름.
필수(부울)해당 필드가 필수인지 여부.
설명(문자열)필드를 문서화하는 일부 텍스트.
copy(객체)존재하는 경우, 필드의 값은 참조된 곳에서 복사됩니다
객체.
rename(객체)존재하는 경우, 필드의 이름이 변경됩니다.
concat(객체)존재하는 경우, 필드의 값은 두 개 이상의 다른 필드 값의 결합이 됩니다.
split(객체)존재하는 경우, 필드의 값은 구분자를 기준으로 분할하여 다른 문자열 필드에서 추출됩니다.
mask(객체)존재하는 경우, 필드의 값이 마스킹됩니다.
그 값은 ValueSchema.
ValueSchema
하나의 ValueSchema 의 필드를 사용하여 정의됩니다. ValueSchema 값과 그것이 어떻게 처리되어야 하는지를 정의합니다. 각 는 타입
값 유형
설명
문자열
타입 값들
문자열 값
int -2147483648, 2147483647
32비트 정수로 범위 내의 숫자
smallint -32768, 32767
16비트 정수로 범위 내의 숫자
bigint -9223372036854775808, 9223372036854775807
64비트 정수로 범위 내의 숫자
float
부울
64비트 부동소수점 숫자 부울 값 / true
false
timestamp
타임스탬프 값
array
객체
각 요소가 동일한 타입인 JSON 배열 알려진 키들
json
유효한 모든 JSON 값(JSON 객체, 배열, 숫자, 문자열, 부울)
의 필드들은 ValueSchema 의 값에 따라 달라집니다 는.
타입
을 선택하십시오. 다음 키/값 쌍을 지정하십시오:
값
설명
false
isEventTime
부울
Panther에게 이 타임스탬프를 로그 이벤트 타임스탬프로 사용하라고 지시하는 플래그.
타임스탬프
타임스탬프는 는 필드를 false 로 설정하고 타임스탬프 형식을 timeFormats 필드에 붙여넣으세요.
지정하여 정의됩니다. false Panther는 항상
값을 협정 세계시(UTC)로 저장합니다. 이는 다음을 의미합니다:
false만약 필드 값이 UTC 이외의 타임존을 나타내면(UTC 오프셋), Panther는 이를 UTC로 변환합니다.
false예를 들어, 들어오는필드 값이2025-07-02T00:15:30-08:00-08:00(여기서 오프셋은 태평양 표준시[PST]임을 의미)라면, Panther는 이를2025-07-02 08:15:30.000000000로 저장합니다(UTC로 변환됨).
값을 협정 세계시(UTC)로 저장합니다. 이는 다음을 의미합니다:
false필드 값이 타임존을 나타내지 않는다면, Panther는 이를 UTC로 간주하고 그대로 저장합니다.
허용되는 timeFormats 값은 아래를 참조하세요:
rfc3339
2022-04-04T17:09:17Z
가장 일반적인 타임스탬프 형식입니다.
unix_auto
1649097448 (초)
1649097491531 (밀리초)
1649097442000000 (마이크로초)
1649097442000000000 (나노초)
유닉스 epoch 이후 경과된 시간으로 표현된 타임스탬프입니다. 초, 밀리초, 마이크로초, 나노초를 처리할 수 있습니다.
unix
1649097448
유닉스 epoch 이후 경과된 초 단위로 표현된 타임스탬프입니다. 초의 소수 부분을 처리할 수 있습니다.
unix_ms
1649097491531
유닉스 epoch 이후 경과된 밀리초 단위로 표현된 타임스탬프입니다.
unix_us
1649097442000000
유닉스 epoch 이후 경과된 마이크로초 단위로 표현된 타임스탬프입니다.
unix_ns
1649097442000000000
유닉스 epoch 이후 경과된 나노초 단위로 표현된 타임스탬프입니다. 과학적 부동 소수점 표기법도 지원됩니다.
사용자를 사용할 것이며, timeFormats 필드는 커스텀 로그 스키마에서 여러 타임스탬프 형식을 지원하기 위해 Panther v1.46에서 도입되었습니다. 물론 timeFormat 은 v1.46 이전에 설정된 로그 소스에 대해서는 여전히 지원되지만, 모든 새 스키마에는 timeFormats 를 사용하세요.
사용자 지정 형식 정의
strftime 표기법을 사용하여 사용자 지정 형식을 정의할 수도 있습니다. 예: strftime 표기법. 예를 들면:
Panther의 strftime 형식은 나노초를 파싱하기 위해 %N 코드를 사용하는 것을 지원합니다. 예:
%H:%M:%S.%N 은 다음을 파싱하는 데 사용될 수 있습니다 11:12:13.123456789
여러 시간 형식 사용
여러 시간 형식이 정의된 경우, 성공적으로 파싱될 때까지 각각 순차적으로 시도됩니다:
타임스탬프 값은 isEventTime: true 로 표시될 수 있으며 Panther에게 이 타임스탬프를 p_event_time 필드로 사용하라고 지시합니다. 여러 필드에 isEventTime 를 설정할 수 있습니다. 이는 로그에 이벤트 시간 정보를 포함하는 선택적이거나 상호 배타적인 필드들이 있을 때 유용할 수 있습니다. 각 로그 이벤트당 단일 p_event_time 만 있을 수 있으므로 우선순위는 스키마에서의 필드 순서로 정의됩니다.
스키마 테스트에서 timeFormats 와 함께 작업하기
timeFormats 와 함께 작업하기pantherlog test 명령으로 실행할 스키마 테스트를 작성할 때, 명령어:
스키마 필드에 단일
timeFormats값이 있는 경우, 이전 호환성을 위해 구성은 동일한 형식을 유지합니다.스키마 필드에 여러
timeFormats값이 있는 경우, 타임스탬프 필드 값을결과YYYY-MM-DD HH:MM:SS.fffffffff 형식으로 포맷된 페이로드에 정의해야 합니다.예: 단일.
값의 예: timeFormats - name: singleFormatTimestamp
값의 예: timeFormats - name: multipleFormatTimestamp
인디케이터
타입의 값들은 "인디케이터"로 사용될 수 있습니다. 필드를 인디케이터로 표시하려면 문자열 필드를 인디케이터 스캐너 이름들의 배열로 설정하세요(여러 개 사용 가능). 이렇게 하면 Panther가 이 필드의 값을 관련 indicators 에 저장하도록 지시합니다. p_any_ 필드에 붙여넣으세요.
필드에 사용할 수 있는 유효한 값의 목록은 indicators 를 참조하세요. 표준 필드.
예를 들면:
검증
다음 validate 키 아래에서, 들어오는 로그가 이 스키마와 일치하려면 충족되어야 하는 필드 값에 대한 조건을 지정할 수 있습니다.
배열 값의 각 요소에 대해 검증을 수행하려면 validate 키에서 요소 (여기서 type: string)를 사용하는 것도 가능합니다.
허용 와 거부 검증
허용 와 거부 검증타입의 값들을 허용 목록 또는 거부 목록으로 선언하여 검증할 수 있습니다. 해당 문자열 에 있는 값들과 일치(또는 불일치)하는 필드 값이 있는 로그만 이 스키마로 파싱됩니다. 이는 공통의 중복 필드를 가지지만 해당 필드 값에서 다른 여러 로그 유형을 가질 수 있음을 의미합니다. 허용/거부 # 'login' 및 'logout' 이벤트 타입 값만 이 로그 유형과 일치하도록 허용할 것입니다
denyContains 와 문자열 값이 특정 부분 문자열을 포함하거나 포함하지 않는지를 검증
denyContains 와 문자열 값이 특정 부분 문자열을 포함하거나 포함하지 않는지를 검증로 검증할 수 있습니다. 이는 정확한 값이 아니라 부분 문자열 기반으로 로그 유형을 매칭해야 할 때 유용합니다. denyContains 와 문자열 값이 특정 부분 문자열을 포함하거나 포함하지 않는지를# message 값에 'error' 또는 'fail'이 포함된 로그만 일치합니다
cidr 와 형식 검증 타입은 잘 알려진 형식과 일치하도록 제한될 수 있습니다. 현재 Panther는
cidr 와 형식 검증 타입은 잘 알려진 형식과 일치하도록 제한될 수 있습니다. 현재 Panther는타입의 값들은 "인디케이터"로 사용될 수 있습니다. 필드를 인디케이터로 표시하려면 문자열 형식을 지원하여 문자열 값이 유효한 IP 주소 또는 CIDR 범위인지 요구할 수 있습니다. cidr 와 형식 검증 검증은
cidr 와 형식 검증 룰과 결합될 수 있지만 다소 중복적일 수 있습니다—예를 들어 두 개의 IP 주소를 허용한다면, 허용, 거부, denyContains, 또는 문자열 값이 특정 부분 문자열을 포함하거나 포함하지 않는지를 검증을 추가하면 목록의 IP 주소들이 유효하지 않을 경우 false positive를 포함하지 않도록 보장할 뿐입니다. cidr # 유효한 ipv4 IP 주소를 허용합니다. 예: 100.100.100.100
코드 편집기나 통합 개발 환경(IDE)이
JSON 스키마 를 지원한다면,사용하도록 구성할 수 있습니다 이 스키마 파일을 Panther 스키마에 대해 그리고 이 스키마-테스트 파일을 스키마 테스트에 대해. 이렇게 하면 Panther 스키마와 그 테스트를 개발하는 동안 제안과 오류 메시지를 받을 수 있습니다.
JetBrains 맞춤 JSON 스키마
환경에서 Fluentd 시작에 관해서는 JetBrains 문서 JetBrains IDE가 맞춤 JSON 스키마를 사용하도록 구성하는 방법에 대한 지침입니다.
VSCode 맞춤 JSON 스키마
환경에서 Fluentd 시작에 관해서는 VSCode 문서 VSCode가 JSON 스키마를 사용하도록 구성하는 방법에 대한 지침입니다.
스트림 타입
Data Transport용 S3 버킷 구성 원시 로그에서 커스텀 스키마 추론 이전에 생성한 Snowflake 사용자 이름, 예를 들면 , 같은 Panther 콘솔에서 특정 작업을 수행할 때 로그 스트림 타입을 선택해야 합니다.아래 각 타입에 대한 예시 로그 이벤트를 확인하세요.
예시 로그 이벤트
자동
해당 없음
이벤트는 줄바꿈 문자로 구분됩니다.
JSON
"ip": "10.0.0.1",
JSON 배열
또는 이벤트는 최상위 객체의 키에 대한 값인 JSON 객체들의 배열 내부에 있습니다. 이를 "엔벨로프 배열"이라고 부를 수 있습니다.
{ "ip": "10.0.0.1", "username": "[email protected]", "country": "France" },
이벤트는 CloudWatch Logs에서 왔습니다.
"owner": "111111111111",
JSON 배열 스트림 타입에서는 이벤트 배열이 "엔벨로프 배열"인지(즉 이벤트 필드의 값인지) 여부를 지정할 수 있습니다.
JSON 배열의 "엔벨로프 배열" 옵션은 Panther 콘솔에서 로그 집합에 대해 스키마를 테스트할 때는 지원되지 않습니다.
XML 스트림 타입은 Panther 버전 1.114부터 오픈 베타로 제공되며 모든 고객이 사용할 수 있습니다. 버그 리포트와 기능 요청은 Panther 지원 팀에 공유해 주세요.

<log>
XML 로그 이벤트를 파싱할 때 Panther는 XML 요소들을 JSON 객체로 변환합니다—높은 수준에서 요소 이름은 키로, 텍스트 내용은 값으로 변환됩니다.
XML 로그에 대한 커스텀 스키마 생성 방법에 대해 자세히 알아보려면 여기를 참조하세요 XML 루트 요소 지원.
Panther는 로그 이벤트가 루트 요소 내에 둘러싸여 있는 XML 파일(이벤트가 최상위 요소인 파일도 지원)에 대한 파싱을 지원합니다. 루트 요소를 지정하면 Panther는 그 안에 포함된 개별 이벤트를 추출하여 각 자식 요소를 별도의 로그 이벤트로 처리합니다.
루트 요소에 둘러싸인 이벤트를 파싱하려면 Panther에서 스트림 타입을 선택할 때:
스트림 타입으로
XML 를 선택하세요.
다음을 설정하세요 XML 이벤트가 루트 요소에 둘러싸여 있습니까? 토글을 예.
일반 구성 XML 루트 요소 필드에 루트 요소 이름을 입력하세요(예:
logs,events,data).
XML 처리 규칙
더 자세히 말하면, Panther가 XML 파일을 처리하는 방법은 다음과 같습니다:
각 최상위 XML 요소는 별도의 이벤트로 처리됩니다, 단 하나의 루트 요소가 지정되었습니다, 이 경우 Panther는 해당 요소 내에서 이벤트를 추출합니다.
중첩된 요소는 중첩된 객체에 포함됩니다.
요소 이름은 필드 이름이 됩니다.
같은 중첩 수준에서 여러 요소가 동일한 이름을 가지면, 키가 공통 요소 이름이고 값이 요소 내용(예: 텍스트 내용, 속성, 중첩 필드 등)의 배열인 배열 필드가 생성됩니다.
텍스트 내용은 필드 값이 됩니다.
요소가 텍스트 내용만 가지고 있고(속성이나 중첩 요소가 없는 경우) 텍스트 내용은 필드 값으로 직접 파싱됩니다.
요소가 1) 텍스트 내용과 2) 적어도 하나의 속성 또는 중첩 요소를 모두 가지고 있다면, 텍스트 내용은 다음의 값으로 저장됩니다
text키.요소가 비어 있으면(예: 텍스트 내용이 없는 경우) 값이 다음으로 지정됩니다
null.텍스트 내용이 하나 이상의 요소로 나뉘어 있는 경우 각 부분 사이에 공백을 두고 연결됩니다.
요소 속성(예:)
<User role="admin">)은 텍스트 내용과 함께 공유된 중첩 객체에 키/값 쌍으로 추가됩니다.속성 이름이 중첩 요소의 이름과 충돌하는 경우(중첩 객체에서 필드 이름이 될 이름처럼), 속성 이름에는 다음이 부여됩니다
_attr접미사. 만약 속성 이름이text이고 요소가 텍스트 내용을 가지고 있다면(중첩된text키를 생성할 경우), 속성 필드는 다음이 됩니다text_attr.사용자를 사용할 것이며,
xmlns속성(XML 네임스페이스 선언)은 자동으로 건너뜁니다.
예시 XML 입력:
Panther가 처리한 결과:
마지막 업데이트
도움이 되었나요?

