로그 스키마 참조

이 가이드에서는 온보딩 시 YAML 기반 스키마를 구성할 때 사용되는 일반 필드를 찾을 수 있습니다 사용자 지정 로그 타입arrow-up-right조회 테이블arrow-up-right 스키마입니다.

circle-info

이 페이지 전체에서 필수 필드는 굵게.

LogSchema 필드

각 로그 스키마는 다음 필드를 포함합니다:

  • 필드 ([]FieldSchema)

    • 로그 이벤트.

  • 파서 (ParserSpec)

    • 비 JSON 로그를 JSON으로 변환하거나/및 사용자 지정 변환을 수행할 수 있는 파서

CI/CD 스키마 필드

또한 CI/CD 워크플로를 사용하여 정의된 스키마는 다음 필드를 포함할 수 있습니다:

  • 스키마 (문자열)

    • 스키마의 이름

  • 설명 (문자열)

    • UI에 표시되는 간단한 설명

  • 참조 URL (문자열)

    • 로그 구조를 지정하는 외부 문서에 대한 링크입니다. 종종 타사 문서에 대한 링크입니다.

  • fieldDiscoveryEnabled (불리언)

    • 다음을 나타냅니다 필드 검색 이 스키마에 대해 활성화될지 여부.

circle-info

CI/CD 파이프라인을 통해 스키마를 관리하는 방법에 대한 정보는 Custom Logs 페이지를 참조하세요 Panther Analysis Tool(PAT)을 사용하여 사용하는 방법.

예시

아래 예시는 위에서 언급한 CI/CD 필드를 포함합니다.

ParserSpec

ParserSpec는 비JSON 입력을 JSON으로 변환하는 데 사용할 파서를 지정합니다. 다음 필드 중 하나만 지정할 수 있습니다:

  • fastmatch (FastmatchParser{}): 사용 fastmatch 파서

  • regex (RegexParser{}): 사용 regex 파서

  • csv (CSVParser{}): 사용 csv 파서

  • CSV 로그 파서script CSV 로그 파서 파서

스크립트 로그 파서 fastmatch, regex다음의 필드를 보세요 csv

아래 탭에서. fastmatch 필드

  • 파서 (match[]string

  • ): 하나 이상의 패턴으로 로그 라인을 일치시킬 것. 이 필드는 비어 있을 수 없습니다. (matchemptyValues ): 다음으로 간주할 값들.

  • null (expandFieldsmap[string]string

  • ): 텍스트 템플릿을 확장하여 주입할 추가 필드. (trimSpacebool

이벤트별로 실행할 함수

FieldSchema 이벤트별로 실행할 함수 하나의

  • 필드와 그 값을 정의합니다. 필드는 다음으로 정의됩니다: (문자열)

    • name

  • 필드의 이름. (불리언)

    • required

  • 설명 (문자열)

    • 필드가 필수인지 여부.

  • 있을 경우, 필드의 값은 참조된 (copy)

    • 에서 복사됩니다.

  • rename (copy)

    • 있을 경우, 필드의 이름이 변경됩니다.

  • concat (copy)

    • 있을 경우, 필드의 값은 두 개 이상의 다른 필드 값의 결합이 됩니다.

  • split (copy)

    • 있을 경우, 필드의 값은 구분자를 기준으로 분할하여 다른 문자열 필드에서 추출됩니다.

mask 있을 경우, 필드의 값은 마스킹됩니다..

있을 경우, 필드의 값은 마스킹됩니다.

FieldSchema 있을 경우, 필드의 값은 마스킹됩니다. 그 값은 있을 경우, 필드의 값은 마스킹됩니다. 의 필드를 사용하여 정의됩니다. ValueSchema 값과 그 처리 방법을 정의합니다. 각

필드가 있으며 다음 값을 가질 수 있습니다:

type

문자열

값 유형

설명

타입 값 -2147483648, 2147483647

문자열 값

int -32768, 32767

범위 내의 32비트 정수

smallint -9223372036854775808, 9223372036854775807

범위 내의 16비트 정수

bigint

불리언

범위 내의 64비트 정수 float / 64비트 부동 소수점 숫자

부울 값

true

false

timestamp

copy

타임스탬프 값 array 각 요소가 동일한 타입인 JSON 배열

다음의 JSON 객체

알려진

있을 경우, 필드의 값은 마스킹됩니다. json ValueSchema.

유효한 모든 JSON 값(JSON 객체, 배열, 숫자, 문자열, 부울)

의 필드는

의 값에 따라 달라집니다.

type

copy

필드 타입

(필수) []FieldSpec

false

의 배열 타입

FieldSchema 있을 경우, 필드의 값은 마스킹됩니다. FieldSpec

부울 값

객체로서 객체의 필드를 설명합니다. 타입

element

배열의 요소를 설명합니다. timeFormats)

부울 값

[]String

타임스탬프를 파싱하는 데 사용할 형식을 지정하는 배열(참조:

타임스탬프 isEventTime.

문자열

불리언

element

Panther에게 이 타임스탬프를 로그 이벤트 타임스탬프)

문자열

로 사용할지 여부를 알려주는 플래그

인디케이터

timeFormats

validate ValueSchema 참조 부울 값 검증 객체로서 객체의 필드를 설명합니다. 문자열 값에 대한 검증 룰

타임스탬프는 부울 값 필드를

  • 로 설정하고 부울 값 필드를 사용하여 타임스탬프 형식을 지정하여 정의합니다. Panther는 항상arrow-up-right값을 협정 세계시(UTC)로 저장합니다. 이는 다음을 의미합니다:

    • 만약 부울 값 필드 값이 UTC가 아닌 타임존을 나타내는 경우(UTC 오프셋과 함께), Panther는 이를 UTC로 변환합니다. 예를 들어, 들어오는 필드 값이 -08:00 2025-07-02T00:15:30-08:00 2025-07-02 08:15:30.000000000 (여기서 오프셋은 태평양 표준시[PST]임을 의미함)인 경우, Panther는 이를

  • 로 설정하고 부울 값 (UTC로 변환된 값)로 저장합니다.

필드 값이 타임존을 나타내지 않으면 Panther는 이를 UTC로 가정하고 있는 그대로 저장합니다. 객체로서 객체의 필드를 설명합니다. 허용되는

값을 아래에서 확인하세요:
예시
type

timeFormats 값

rfc3339

2022-04-04T17:09:17Z

가장 일반적인 타임스탬프 형식입니다.

1649097448 (초) 1649097491531 (밀리초) 1649097442000000 (마이크로초) 1649097442000000000 (나노초)

UNIX epoch 시간 이후 경과한 시간으로 표현된 타임스탬프입니다. 초, 밀리초, 마이크로초 및 나노초를 처리할 수 있습니다.

unix

1649097448

UNIX epoch 이후 경과한 초로 표현된 타임스탬프입니다. 소수 부분으로 초의 분수를 처리할 수 있습니다.

unix_ms

1649097491531

UNIX epoch 이후 경과한 밀리초로 표현된 타임스탬프입니다.

unix_us

1649097442000000

UNIX epoch 이후 경과한 마이크로초로 표현된 타임스탬프입니다.

unix_ns

1649097442000000000

UNIX epoch 이후 경과한 나노초로 표현된 타임스탬프입니다. 과학적 부동 소수점 표기법을 지원합니다.

circle-exclamation

사용자 지정 형식 정의

또한 strftimearrow-up-right 표기법을 사용하여 사용자 지정 형식을 정의할 수 있습니다. 예를 들어:

Panther의 strftime 형식은 나노초를 파싱하기 위해 %N 코드를 사용하는 것을 지원합니다. 예를 들어:

%H:%M:%S.%N11:12:13.123456789

여러 시간 형식 사용

여러 시간 형식이 정의된 경우, 성공적으로 파싱될 때까지 각 형식이 순차적으로 시도됩니다:

타임스탬프 값은 isEventTime: true 로 표시되어 Panther에 이 타임스탬프를 p_event_time 필드로 사용해야 한다고 알릴 수 있습니다. 여러 필드에 []String 를 설정하는 것이 가능합니다. 이는 로그에 이벤트 시간 정보를 담고 있는 선택적이거나 상호 배타적인 필드가 있는 상황에서 유용할 수 있습니다. 각 로그 이벤트마다 단일 p_event_time 만 있을 수 있으므로 우선순위는 스키마 내 필드의 순서를 사용하여 정의됩니다.

작업하기 객체로서 객체의 필드를 설명합니다. 스키마 테스트에서

를 사용하여 실행할 스키마 테스트를 작성할 때, pantherlog test 명령:

  • 스키마 필드에 단일 객체로서 객체의 필드를 설명합니다. 값이 있는 경우, 이전 호환성을 위해 구성은 동일한 형식을 유지합니다.

  • 스키마 필드에 여러 객체로서 객체의 필드를 설명합니다. 값이 있는 경우, 결과 페이로드에서 타임스탬프 필드 값을 result 키에 정의해야 합니다. 결과 페이로드는 YYYY-MM-DD HH:MM:SS.fffffffff 형식으로 포맷되어야 합니다..

단일 객체로서 객체의 필드를 설명합니다. 값의 예:

여러 객체로서 객체의 필드를 설명합니다. 값의 예:

로그 이벤트 타임스탬프

형의 값은 "지표(인디케이터)"로 사용될 수 있습니다. 문자열 필드를 인디케이터로 표시하려면 해당 필드의 값을 인디케이터 스캐너 이름들의 배열로 설정하십시오(여러 개 사용 가능). 이렇게 하면 Panther는 이 필드의 값을 관련 불리언 에 저장하도록 지시합니다. p_any_ 문자열 값에 대한 검증 룰

필드에 사용할 수 있는 값 목록은 불리언 에서 확인하십시오. 표준 필드.

예를 들면:

이 값에서 인디케이터를 추출하도록 Panther에 지시합니다(참조:

Under the 로 사용할지 여부를 알려주는 플래그 키 아래에서 들어오는 로그가 이 스키마와 일치하려면 충족해야 하는 필드 값에 대한 조건을 지정할 수 있습니다.

또한 로 사용할지 여부를 알려주는 플래그 키에서 의 배열 (여기서 type: string)를 사용하여 배열 값의 각 요소에 대한 검증을 수행할 수 있습니다.

allowdeny 검증

형의 값을 허용 목록 또는 거부 목록을 선언하여 검증할 수 있습니다. 문자열 에 일치(또는 일치하지 않음)하는 필드 값이 있는 로그만 이 스키마로 파싱됩니다. 이는 공통으로 겹치는 필드를 가지되 해당 필드의 값으로 구분되는 여러 로그 유형을 가질 수 있음을 의미합니다. allow/deny # 'login' 및 'logout' 이벤트 타입 값만 이 로그 유형과 일치하도록 허용합니다

denyContains문자열 값이 특정 부분 문자열을 포함하거나 포함하지 않음을 검증

을 사용하여 검증할 수 있습니다. 이는 정확한 값이 아니라 부분 문자열 기반으로 로그 유형을 일치시켜야 할 때 유용합니다. denyContains문자열 값이 특정 부분 문자열을 포함하거나 포함하지 않음을# message 값에 'error' 또는 'fail'이 포함된 로그만 일치합니다

cidr형식 검증 형은 잘 알려진 형식과 일치하도록 제한될 수 있습니다. 현재 Panther는 문자열 값이 유효한 IP 주소 또는 CIDR 범위인지 요구하기 위해

형의 값은 "지표(인디케이터)"로 사용될 수 있습니다. 문자열 형식을 지원합니다. cidr형식 검증 검증은

cidr형식 검증 와 결합할 수 있습니다, 또는 allow, deny, denyContains룰과 결합할 수 있지만, 이는 다소 중복적입니다 — 예를 들어 두 개의 IP 주소를 허용하면, 문자열 값이 특정 부분 문자열을 포함하거나 포함하지 않음을 검증을 추가하는 것은 단순히 목록에 있는 IP 주소가 유효하지 않은 경우 잘못된 긍정이 포함되지 않도록 보장합니다. cidr # 유효한 ipv4 IP 주소(예: 100.100.100.100)를 허용합니다

코드 편집기나 통합 개발 환경(IDE)이

JSON Schema 를 지원하는 경우,arrow-up-right이 스키마 파일을 Panther 스키마에 사용하도록 구성할 수 있으며arrow-up-right 이 스키마-테스트 파일을 스키마 테스트에 사용할 수 있습니다. 이렇게 하면 Panther 스키마와 그 테스트를 개발하는 동안 제안 및 오류 메시지를 받을 수 있습니다.arrow-up-right JetBrains 커스텀 JSON 스키마

을 참조하세요

JetBrains 문서 JetBrains IDE에서 커스텀 JSON 스키마를 사용하도록 구성하는 방법에 대한 지침은arrow-up-right 을 참조하세요.

VSCode 커스텀 JSON 스키마

JetBrains 문서 VSCode 문서arrow-up-right VSCode에서 JSON 스키마를 사용하도록 구성하는 방법에 대한 지침은

스트림 유형

Panther 콘솔에서 S3 버킷을 Data Transport용으로 구성하거나 원시 로그에서 사용자 지정 스키마를 유추하는 등의 특정 작업을 수행할 때, 로그 스트림 유형을 선택해야 합니다. 또는 원시 로그에서 사용자 지정 스키마를 유추하는중 하나의 동작을 수행할 때 로그 스트림 유형을 선택해야 합니다.

아래에서 각 유형에 대한 예시 로그 이벤트를 확인하세요.

스트림 유형
type
예시 로그 이벤트

자동

Panther가 적절한 스트림 유형을 자동으로 감지합니다.

해당 없음

라인

이벤트는 줄바꿈 문자로 구분됩니다.

JSON

이벤트는 JSON 형식입니다.

JSON 배열

이벤트는 JSON 객체들의 배열 안에 있습니다.

또는 이벤트는 최상위 객체의 키에 대한 값인 JSON 객체들의 배열 안에 있습니다. 이것은 "enveloped array"로 알려질 수 있습니다.

CloudWatch 로그

이벤트는 CloudWatch Logs에서 왔습니다.

XML

이벤트는 XML 형식입니다. 이벤트는 최상위에 위치하거나 루트 요소에 둘러싸여 있습니다입니다. XML이 어떻게 파싱되는지에 대한 자세한 내용은 XML 스트림 유형에서 확인하세요.

JSON 배열 스트림 유형

JSON 배열 스트림 유형을 사용하면 이벤트 배열이 "인벨롭된 배열(=enveloped array)"인지—즉 이벤트 필드의 값인지 여부를 지정할 수 있습니다.

circle-exclamation

CloudWatch Logs 스트림 유형

CloudWatch Logs 스트림 유형을 사용하면 선택적으로 인벨롭 필드 보존 을(를) 활성화하여 최상위 인벨롭 메타데이터(예: owner, logGroup다음의 필드를 보세요 logStream)를 p_header 각 처리된 이벤트의 필드에 보존할 수 있습니다.

CloudWatch Logs 구독은 다음과 같은 형태의 인벨롭에 이벤트를 전달합니다:

인벨롭 필드 보존이 활성화되면 각 처리된 이벤트에는 인벨롭 메타데이터가 p_header 필드에 포함됩니다:

indicators 인벨롭 필드 보존 을(를) 활성화하는 방법은 지침을 참조하세요.

XML 스트림 유형에서 확인하세요

XML 로그 이벤트를 파싱할 때 Panther는 XML 요소를 JSON 객체로 변환합니다—대략적으로 요소 이름은 키가 되고 텍스트 내용은 값이 됩니다. XML 로그용 커스텀 스키마 생성 방법에 대해 자세히 알아보려면 여기를 참조하세요.

XML 루트 요소 지원

Panther는 로그 이벤트가 루트 요소 내에 포함된 XML 파일(이벤트가 최상위 요소인 파일도 지원) 파싱을 지원합니다. 루트 요소를 지정하면 Panther는 그 안에 포함된 개별 이벤트를 추출하여 각 자식 요소를 별도의 로그 이벤트로 처리합니다.

루트 요소에 포함된 이벤트를 파싱하려면 Panther에서 스트림 유형을 선택할 때:

  1. 스트림 유형으로 XML.

  2. 을(를) 선택하세요 XML 이벤트가 루트 요소로 둘러싸여 있습니까? 토글을 .

  3. 에 있는 XML 루트 요소 필드에 루트 요소 이름(예: logs, events, data).

    Various form fields are circled: A radio button labeled "XML," a toggle set to "Yes," a text field labeled "XML Root Element," etc.

XML 처리 규칙

더 자세히 보면 Panther가 XML 파일을 처리하는 방식은 다음과 같습니다:

  • 루트 요소가 지정되지 않는 한 각 최상위 XML 요소는 별도의 이벤트로 처리되며,루트 요소가 지정된 경우 Panther는 해당 요소 내부에서 이벤트를 추출합니다.

    • 중첩된 요소는 중첩된 객체로 감싸집니다.

  • 요소 이름은 필드 이름이 됩니다.

    • 같은 중첩 수준에서 동일한 이름을 가진 여러 요소가 있으면 키가 공유된 요소 이름인 배열 필드가 생성되고 값은 요소 내용(즉 텍스트 내용, 속성, 중첩 필드 등)의 배열이 됩니다.

  • 텍스트 내용은 필드 값이 됩니다.

    • 요소에 텍스트 내용만 있고(속성이나 중첩 요소가 없는 경우) 텍스트 내용이 필드 값으로 직접 파싱됩니다.

    • 요소에 1) 텍스트 내용과 2) 적어도 하나의 속성 또는 중첩 요소가 모두 있는 경우 텍스트 내용은 text 키의 값으로 저장됩니다.

    • 요소가 비어 있는 경우(즉 텍스트 내용이 없는 경우) 그 값은 ): 다음으로 간주할 값들.

    • 텍스트 내용이 하나 이상의 요소로 분리된 경우 각 부분 사이에 공백을 넣어 연결됩니다.

  • 요소 속성(예: <User role="admin">)은 텍스트 내용과 함께 공유된 중첩 객체에 키/값 쌍으로 추가됩니다.

    • 속성 이름이 중첩 요소 이름(결과 중첩 객체에서 필드 이름이 될 것)과 충돌하면 속성 이름에는 _attr 접미사가 붙습니다. 속성 이름이 text 이고 요소에 텍스트 내용이 있는 경우(중첩 text 키를 생성함) 속성 필드는 text_attr.

    • The xmlns 속성(XML 네임스페이스 선언)은 자동으로 건너뜁니다.

예제 XML 입력:

Panther가 처리한 결과:

마지막 업데이트

도움이 되었나요?