본문 바로가기
WIKI 기술 지식 베이스

Grok 파서 (Grok Parser)

원문 보기 위키 갱신

원시 이벤트의 전체 메시지 또는 특정 속성을 파싱하는 사용자 정의 Grok 규칙을 만들어요. 모범 사례로 Grok 파서를 파싱 규칙 10개로 제한하세요. Grok 구문과 파싱 규칙에 대한 자세한 내용은 Parsing을 참고하세요.

출처: 문서

본문

사용 사례 (Use cases)

Grok 파서는 주로 로그의 메시지에서 속성을 파싱하는 데 사용돼요. 예를 들어 NGINX 로그는 추출하고 싶은 여러 정보를 포함하는 메시지를 가져요.

Grok 규칙을 만든 후 파서는 IP 주소, 사용자, 요청 타임스탬프, 요청 메서드, URL, 버전, 상태 코드, 바이트를 기록할 수 있어요.

설정 (Setup)

Pipelines 페이지에서 Grok 프로세서를 정의하세요. Grok 파싱 규칙을 구성하려면:

  1. Add Grok Parser를 클릭해 새 파서 구성을 엽니다.
  2. Log Samples: 로그 샘플이 Log Samples 섹션에 자동으로 불러와져요. 로그 샘플을 더 추가할 수도 있어요(최대 10개, 각 5000자). 참고: 샘플 로그는 파이프라인 필터와 일치하는 볼륨이 가장 높은 다섯 가지 로그 패턴에서 가져와요.
  3. Log Samples: 파싱 규칙을 테스트할 최대 5개의 샘플 로그(각 최대 5000자)를 추가하세요.
  4. 파싱 규칙 정의: Auto parsing을 클릭해 샘플과 일치하는 규칙을 생성하세요.
  5. 규칙 테스트: 샘플을 클릭해 파싱 규칙에 대한 평가를 트리거하고 결과를 화면 오른쪽에 표시하세요. 모든 샘플은 상태(match 또는 no match)를 표시하며, 이는 Grok 파서의 파싱 규칙 중 하나가 샘플과 일치하는지 강조해요.

로그의 전후 상태 (Before and after state of logs)

예시: nginx 접근 로그 파싱

전 (원시 로그, Before - raw log):

192.168.1.1 - john [10/Oct/2023:13:55:36 +0000] "GET /api/users HTTP/1.1" 200 1234

Grok 파싱 규칙 (Grok parsing rule):

access.common %{ipOrHost:network.client.ip} %{notSpace:http.ident} %{notSpace:http.auth} \[%{httpdate:date}\] "(?>%{word:http.method} |)%{notSpace:http.url}(?: HTTP/%{number:http.version}|)" %{number:http.status_code} (?>%{number:network.bytes_written}|-)

처리 후 (After processing):

{
 "network": {
   "client": {
     "ip": "192.168.1.1"
   },
   "bytes_written": 1234
 },
 "http": {
   "ident": "-",
   "auth": "john",
   "method": "GET",
   "url": "/api/users",
   "version": "1.1",
   "status_code": 200
 },
 "date": 1696945536000
}

Grok 파서는 비구조화된 로그 메시지를 Log Explorer에서 쿼리·필터링·분석할 수 있는 구조화된 JSON 속성으로 변환해요.

API

다음 Grok 파서 JSON 페이로드와 함께 Datadog Log Pipeline API 엔드포인트를 사용하세요:

{
  "type": "grok-parser",
  "name": "Parsing Log message",
  "is_enabled": true,
  "source": "message",
  "samples": ["sample log 1", "sample log 2"],
  "grok": {"support_rules": "<SUPPORT_RULES>", "match_rules": "<MATCH_RULES>"}
}
매개변수 타입 필수 설명
type String 예 프로세서의 타입.
name String 아니오 프로세서의 이름.
is_enabled Boolean 아니오 프로세서가 활성화되었는지 여부. 기본값: false.
source String 예 파싱할 로그 속성의 이름. 기본값: message.
samples Array of strings 아니오 이 Grok 파서의 샘플 로그(최대 5개) 목록.
grok.support_rules String 예 Grok 파서의 Support 규칙 목록.
grok.match_rules String 예 Grok 파서의 Match 규칙 목록.

더 알아보기 (Learn more)