Grok 파서 (Grok Parser)
원시 이벤트의 전체 메시지 또는 특정 속성을 파싱하는 사용자 정의 Grok 규칙을 만들어요. 모범 사례로 Grok 파서를 파싱 규칙 10개로 제한하세요. Grok 구문과 파싱 규칙에 대한 자세한 내용은 Parsing을 참고하세요.
출처: 문서
본문
사용 사례 (Use cases)
Grok 파서는 주로 로그의 메시지에서 속성을 파싱하는 데 사용돼요. 예를 들어 NGINX 로그는 추출하고 싶은 여러 정보를 포함하는 메시지를 가져요.
Grok 규칙을 만든 후 파서는 IP 주소, 사용자, 요청 타임스탬프, 요청 메서드, URL, 버전, 상태 코드, 바이트를 기록할 수 있어요.
설정 (Setup)
Pipelines 페이지에서 Grok 프로세서를 정의하세요. Grok 파싱 규칙을 구성하려면:
- Add Grok Parser를 클릭해 새 파서 구성을 엽니다.
- Log Samples: 로그 샘플이 Log Samples 섹션에 자동으로 불러와져요. 로그 샘플을 더 추가할 수도 있어요(최대 10개, 각 5000자). 참고: 샘플 로그는 파이프라인 필터와 일치하는 볼륨이 가장 높은 다섯 가지 로그 패턴에서 가져와요.
- Log Samples: 파싱 규칙을 테스트할 최대 5개의 샘플 로그(각 최대 5000자)를 추가하세요.
- 파싱 규칙 정의: Auto parsing을 클릭해 샘플과 일치하는 규칙을 생성하세요.
- 규칙 테스트: 샘플을 클릭해 파싱 규칙에 대한 평가를 트리거하고 결과를 화면 오른쪽에 표시하세요. 모든 샘플은 상태(
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 규칙 목록. |