Fastmatch 로그 파서

개요

설정은 fastmatch 파서는 로그 라인 내에서 필드의 위치를 지정하는 단순한 문자열 패턴을 사용합니다. 이름에서 알 수 있듯이 매우 빠르며 텍스트 로그를 파싱하는 권장 방법으로 고려해야 합니다. 필드의 순서를 알고 있는 대부분의 구조화된 텍스트 로그 사례를 처리할 수 있습니다. 사실 너무 빨라서 여러 패턴을 순서대로 지정하여 테스트할 수 있으므로 로그 라인 구조에 약간의 변형이 있는 경우에도 이를 '해결'할 수 있습니다.

fastmatch 사용 예시

다음 예시 로그 라인은 Apache Common Log 형식을 사용합니다:

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326

다음은 이 로그 유형에 대해 다음을 사용하여 로그 스키마를 정의하는 방법입니다 fastmatch:

Panther 콘솔에서는 다음을 따릅니다 사용자 지정 스키마를 수동으로 생성하는 방법 안내을 선택하고, FastMatch 파서를 선택합니다.

In a "Schema" section, "FastMatch" is selected for a Parser field. There are various form fields shown, such as Match Patterns, Empty Values, and Skip Prefix.

다음 필드 및 지표 섹션(위 스크린샷에 표시된 파서 섹션 아래), 우리는 필드를 정의합니다:

필드:
  - 이름: remote_ip
    type: string
    지표:
      - ip
  - name: identity
    type: string
  - name: user
    type: string
  - 이름: timestamp
    type: timestamp
    isEventTime: true
    timeFormats:
     - '%d/%b/%Y:%H:%M:%S %z'
  - name: method
    type: string
  - 이름: request_uri
    type: string
  - 이름: protocol
    type: string
  - 이름: status
    유형: int
  - name: bytes_sent
    type: bigint

fastmatch 패턴 이해하기

패턴은 %{field_name} 플레이스홀더를 사용하여 로그 라인에서 필드가 예상되는 위치를 설정합니다. 예를 들어 다음 텍스트를 매칭하려면:

다음 패턴을 사용할 수 있습니다(명확성을 위해 작은따옴표로 둘러쌈):

Panther 콘솔에서 스키마를 정의하는 경우 패턴을 매치 패턴 필드에 입력합니다:

A "Match Patterns" field is shown. Its description is, "Define patterns to match log entries and extract structured information from unstructured log lines."

구분자

두 연속된 필드 사이의 텍스트는 그들 사이의 '구분자'를 정의합니다. 구분자는 비어 있을 수 없습니다.

위 예의 패턴에서는 "@" 를 생략할 수 없습니다 serviceip.

이전의 필드는 구분자 텍스트를 포함할 수 없습니다. 위 예에서: timestamp

  • 는 공백을 포함할 수 없습니다 는 포함할 수 없습니다 " "

  • service log_level "@"

  • ip log_level "] ["

  • 익명 필드 log_level "] "

이름 없는 필드 플레이스홀더(

)는 무시됩니다.%{}테일 캡처

패턴의 마지막 필드 뒤에 구분자 텍스트가

없으면, 그것은 모든 것 을(를) 텍스트의 끝까지 캡처합니다. 위 예에서 message"Something when wrong" 을(를) 캡처합니다 따옴표 처리

일부 경우 필드가 텍스트 내에서 따옴표로 감싸질 수 있습니다:

2020-10-10T14:32:05 "Some quoted text with \"escaped quotes\" inside"

%{timestamp} "%{message}"

이 방법은 단일 및 이중 따옴표 모두에 대해 작동합니다.

Last updated

Was this helpful?