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명령어와 동일한 제한 사항이 있어요.