Dissect processor
출처: 문서
본문
Dissect 프로세서
dissect 프로세서는 이벤트에서 값을 추출하여 사용자 정의 dissect 패턴에 따라 개별 필드에 매핑합니다. 이 프로세서는 알려진 구조를 가진 로그 메시지에서 필드를 추출하는 데 적합합니다.
기본 사용법
dissect 프로세서를 사용하려면 다음 pipeline.yaml 파일을 생성하세요:
dissect-pipeline:
source:
file:
path: "/full/path/to/logs_json.log"
record_type: "event"
format: "json"
processor:
- dissect:
map:
log: "%{Date} %{Time} %{Log_Type}: %{Message}"
sink:
- stdout:
{% include copy.html %}
그런 다음 logs_json.log라는 이름의 다음 파일을 생성하고 pipeline.yaml 파일의 파일 소스에 있는 path를 다음 JSON 데이터가 포함된 파일의 경로로 바꾸세요:
{"log": "07-25-2023 10:00:00 ERROR: error message"}
dissect 프로세서는 파이프라인에 구성된 패턴 %{Date} %{Time} %{Type}: %{Message}를 기반으로 log 메시지에서 필드(Date, Time, Log_Type, Message)를 검색합니다.
파이프라인을 실행한 후 다음 표준 출력을 받게 됩니다:
{
"log" : "07-25-2023 10:00:00 ERROR: Some error",
"Date" : "07-25-2023"
"Time" : "10:00:00"
"Log_Type" : "ERROR"
"Message" : "error message"
}
구성
dissect 프로세서는 다음 옵션으로 구성할 수 있습니다.
| 옵션 | 필수 | 타입 | 설명 |
|---|---|---|---|
map |
예 | Map | 특정 키에 대한 dissect 패턴을 정의합니다. dissect 패턴에서 필드를 정의하는 방법에 대한 자세한 내용은 필드 표기법을 참조하세요. |
target_types |
아니요 | Map | 추출된 필드의 데이터 타입을 지정합니다. 유효한 옵션은 integer, double, string, boolean입니다. 기본적으로 모든 필드는 string 타입입니다. |
delete_source |
아니요 | Boolean | 성공적으로 파싱한 후 소스 필드를 삭제할지 여부입니다. 기본값은 false입니다. |
dissect_when |
아니요 | String | Data Prepper 표현식을 사용하여 dissect 작업을 수행하기 위한 조건을 지정합니다. 지정된 경우 표현식이 true로 평가될 때만 dissect 작업이 실행됩니다. |
필드 표기법
다음 필드 타입으로 dissect 패턴을 정의할 수 있습니다.
일반 필드
접미사나 접두사가 없는 필드입니다. 필드는 출력 이벤트에 직접 추가됩니다. 형식은 %{field_name}입니다.
건너뛰기 필드
이벤트에 포함되지 않는 필드입니다. 형식은 %{} 또는 %{?field_name}입니다.
추가 필드
다른 필드와 결합되는 필드입니다. 여러 값을 추가하고 최종 값을 필드에 포함하려면 dissect 패턴에서 필드 이름 앞에 +를 사용하세요. 형식은 %{+field_name}입니다.
예를 들어, 패턴 %{+field_name}, %{+field_name}을 사용하면 로그 메시지 "foo, bar"가 {"field_name": "foobar"}로 파싱됩니다.
접미사 /<integer>를 사용하여 연결 순서를 정의할 수도 있습니다.
예를 들어, 패턴 "%{+field_name/2}, %{+field_name/1}"을 사용하면 로그 메시지 "foo, bar"가 {"field_name": "barfoo"}로 파싱됩니다.
순서가 지정되지 않은 경우 추가 작업은 dissect 패턴에 지정된 필드 순서대로 수행됩니다.
간접 필드
다른 필드의 값을 필드 이름으로 사용하는 필드입니다. 패턴을 정의할 때 필드 앞에 &를 붙이면 해당 필드에서 찾은 값이 키-값 쌍의 키로 할당됩니다.
예를 들어, 패턴 "%{?field_name}, %{&field_name}"을 사용하면 로그 메시지 "foo, bar"가 {“foo”: “bar”}로 파싱됩니다. 로그 메시지에서 foo는 건너뛰기 필드 %{?field_name}에서 캡처됩니다. 그런 다음 foo는 필드 %{&field_name}에서 캡처된 값의 키 역할을 합니다.
패딩 필드
오른쪽 패딩이 제거된 필드입니다. -> 연산자를 접미사로 사용하여 이 필드 뒤의 공백을 무시할 수 있음을 나타냅니다.
예를 들어, 패턴 %{field1->} %{field2}을 사용하면 로그 메시지 “firstname lastname”가 {“field1”: “firstname”, “field2”: “lastname”}로 파싱됩니다.