GROK 명령어

GROK 명령어

grok 명령어는 Grok 패턴을 사용해 텍스트 필드를 파싱하고 추출된 결과를 검색 결과에 추가해요.

출처: 문서

본문

grok 명령어는 Grok 패턴을 사용해 텍스트 필드를 파싱하고 추출된 결과를 검색 결과에 추가해요.

구문 (Syntax)

grok 명령어의 구문은 다음과 같아요:

grok <field> <pattern>

매개변수 (Parameters)

grok 명령어는 다음 매개변수를 지원해요.

매개변수 필수/선택 설명
<field> 필수 파싱할 텍스트 필드예요.
<pattern> 필수 지정된 텍스트 필드에서 새 필드를 추출하는 데 사용되는 Grok 패턴이에요. 새 필드 이름이 이미 존재하면 원본 필드를 덮어써요.

예제 1: Apache access 로그 파싱하기

다음 쿼리는 내장된 COMMONAPACHELOG grok 패턴을 사용해 원시 Apache access 로그를 파싱해요:

source=apache
| grok message '%{COMMONAPACHELOG}'
| fields COMMONAPACHELOG, timestamp, response, bytes

쿼리는 다음과 같은 결과를 반환해요:

COMMONAPACHELOG timestamp response bytes
177.95.8.74 - upton5450 [28/Sep/2022:10:15:57 -0700] “HEAD /e-business/mindshare HTTP/1.0” 404 19927 28/Sep/2022:10:15:57 -0700 404 19927
127.45.152.6 - pouros8756 [28/Sep/2022:10:15:57 -0700] “GET /architectures/convergence/niches/mindshare HTTP/1.0” 100 28722 28/Sep/2022:10:15:57 -0700 100 28722
118.223.210.105 - - [28/Sep/2022:10:15:57 -0700] “PATCH /strategize/out-of-the-box HTTP/1.0” 401 27439 28/Sep/2022:10:15:57 -0700 401 27439
210.204.15.104 - - [28/Sep/2022:10:15:57 -0700] “POST /users HTTP/1.1” 301 9481 28/Sep/2022:10:15:57 -0700 301 9481

예제 2: Envoy access 로그에서 필드 추출하기

다음 쿼리는 Envoy access 로그 항목을 파싱해 HTTP 메서드, 경로, 상태 코드를 추출해요:

source=otellogs
| where LIKE(body, '%HTTP/1.1%')
| grok body '\[%{DATA:ts}\] \"%{WORD:method} %{DATA:path} HTTP/%{DATA:ver}\" %{POSINT:status}'
| fields method, path, status

쿼리는 다음과 같은 결과를 반환해요:

method path status
GET /api/products 200
POST /api/checkout 503

예제 3: 로그 메시지에서 지속 시간 추출하기

다음 쿼리는 grok을 사용해 로그 메시지에서 숫자 지속 시간을 추출해요:

source=otellogs
| where LIKE(body, '%ms%')
| grok body '%{NUMBER:duration}ms'
| fields body, duration
| head 3

쿼리는 다음과 같은 결과를 반환해요:

body duration
Slow query detected: SELECT * FROM products WHERE category = ‘electronics’ took 3200ms 3200
Payment failed: connection timeout to payment gateway after 30000ms 30000
gRPC call /ProductCatalogService/GetProduct completed in 12ms 12

제한 사항 (Limitations)

grok 명령어는 다음과 같은 제한 사항이 있어요:

  • grok 명령어는 parse 명령어와 동일한 제한 사항이 있어요.

더 알아보기 (Learn more)