배열 프로세서 (Array Processor)
배열 프로세서를 이용하면 로그 안의 JSON 배열에서 값을 추출하거나, 집계하고, 변환할 수 있어요. 배열의 요소를 선택하거나, 길이를 계산하고, 값을 추가하고, 키-값 쌍을 펼치는 등 다양한 연산을 전용 프로세서로 구성해 처리할 수 있죠.
출처: 문서
본문
개요
배열 프로세서는 로그 안의 JSON 배열에서 값을 추출하거나, 집계하고, 변환하는 데 사용해요.
지원되는 연산은 다음과 같아요.
- 일치하는 요소에서 값 선택하기
- 배열의 길이 계산하기
- 배열에 값 추가하기
- 배열에서 키-값 쌍 추출하기
각 연산은 전용 프로세서로 구성돼요.
배열 프로세서는 Pipelines 페이지에서 정의해요.
일치하는 요소에서 값 선택하기
조건과 일치할 때 배열 안의 객체에서 특정 값을 추출해요.
UI
Example input (입력 예시):
{
"httpRequest": {
"headers": [
{"name": "Referrer", "value": "https://example.com"},
{"name": "Accept", "value": "application/json"}
]
}
}
Configuration steps (구성 단계):
- Array path:
httpRequest.headers - Condition:
name:Referrer - Extract value of:
value - Target attribute:
referrer
Result (결과):
{
"httpRequest": {
"headers": [...]
},
"referrer": "https://example.com"
}
API
Datadog Log Pipeline API 엔드포인트에 다음 배열 프로세서 JSON 페이로드를 사용하세요:
{
"type": "array-processor",
"name": "Extract Referrer URL",
"is_enabled": true,
"operation" : {
"type" : "select",
"source": "httpRequest.headers",
"target": "referrer",
"filter": "name:Referrer",
"value_to_extract": "value"
}
}
| Parameter | Type | Required | Description |
|---|---|---|---|
type |
String | Yes | 프로세서 유형이에요. |
name |
String | No | 프로세서 이름이에요. |
is_enabled |
Boolean | No | 프로세서 활성화 여부예요. 기본값: false. |
operation.type |
String | Yes | 배열 프로세서 연산 유형이에요. |
operation.source |
String | Yes | 값을 선택할 배열의 경로예요. |
operation.target |
String | Yes | 대상 속성이에요. |
operation.filter |
String | Yes | 배열 요소를 매칭하는 표현식이에요. 첫 번째로 일치하는 요소가 선택돼요. |
operation.value_to_extract |
String | Yes | 선택된 요소에서 읽을 속성이에요. |
배열 길이 계산하기
배열의 요소 수를 계산해요.
UI
Example input (입력 예시):
{
"tags": ["prod", "internal", "critical"]
}
Configuration steps (구성 단계):
- Array attribute:
tags - Target attribute:
tagCount
Result (결과):
{
"tags": ["prod", "internal", "critical"],
"tagCount": 3
}
API
Datadog Log Pipeline API 엔드포인트에 다음 배열 프로세서 JSON 페이로드를 사용하세요:
{
"type": "array-processor",
"name": "Compute number of tags",
"is_enabled": true,
"operation" : {
"type" : "length",
"source": "tags",
"target": "tagCount"
}
}
| Parameter | Type | Required | Description |
|---|---|---|---|
type |
String | Yes | 프로세서 유형이에요. |
name |
String | No | 프로세서 이름이에요. |
is_enabled |
Boolean | No | 프로세서 활성화 여부예요. 기본값: false. |
operation.type |
String | Yes | 배열 프로세서 연산 유형이에요. |
operation.source |
String | Yes | 길이를 추출할 배열의 경로예요. |
operation.target |
String | Yes | 대상 속성이에요. |
배열에 값 추가하기
로그의 대상 배열 속성 끝에 속성 값을 추가해요.
참고: 대상 배열 속성이 로그에 존재하지 않으면 자동으로 생성돼요.
UI
Example input (입력 예시):
{
"network": {
"client": {
"ip": "198.51.100.23"
}
},
"sourceIps": ["203.0.113.1"]
}
Configuration steps (구성 단계):
- Attribute to append:
"network.client.ip" - Array attribute to append to:
sourceIps
Result (결과):
{
"network": {
"client": {
"ip": "198.51.100.23"
}
},
"sourceIps": ["203.0.113.1", "198.51.100.23"]
}
API
Datadog Log Pipeline API 엔드포인트에 다음 배열 프로세서 JSON 페이로드를 사용하세요:
{
"type": "array-processor",
"name": "Append client IP to sourceIps",
"is_enabled": true,
"operation" : {
"type" : "append",
"source": "network.client.ip",
"target": "sourceIps"
}
}
| Parameter | Type | Required | Description |
|---|---|---|---|
type |
String | Yes | 프로세서 유형이에요. |
name |
String | No | 프로세서 이름이에요. |
is_enabled |
Boolean | No | 프로세서 활성화 여부예요. 기본값: false. |
operation.type |
String | Yes | 배열 프로세서 연산 유형이에요. |
operation.source |
String | Yes | 추가할 속성이에요. |
operation.target |
String | Yes | 값을 추가할 배열 속성이에요. |
operation.preserve_source |
Boolean | No | 리매핑 후 원본 소스를 보존할지 여부예요. 기본값: false. |
키-값 쌍 추출하기
키-값 객체의 배열을 개별 속성으로 펼쳐서 요소마다 하나의 속성을 만들어요. 로그가 AWS WAF·HTTP 로그의 요청 헤더처럼 {key, value} 객체 목록으로 데이터를 전달할 때 이 연산을 사용해요. 각 항목은 별도로 검색·패싯 가능한 속성이 돼요. 키는 로그마다 다르더라도 자동으로 처리돼요.
UI
Example input (입력 예시):
{
"httpRequest": {
"headers": [
{"name": "host", "value": "api.example.com"},
{"name": "user-agent", "value": "curl/8.4.0"},
{"name": "x-forwarded-for", "value": "203.0.113.7"}
]
}
}
Configuration steps (구성 단계):
- Array path:
httpRequest.headers - Key attribute:
name - Value attribute:
value - Target attribute: (선택) 비워두면 추출된 속성이 로그의 루트 레벨에 추가돼요.
Result (결과):
{
"httpRequest": {
"headers": [...]
},
"host": "api.example.com",
"user-agent": "curl/8.4.0",
"x-forwarded-for": "203.0.113.7"
}
API
Datadog Log Pipeline API 엔드포인트에 다음 배열 프로세서 JSON 페이로드를 사용하세요:
{
"type": "array-processor",
"name": "Extract HTTP headers",
"is_enabled": true,
"operation" : {
"type" : "key-value",
"source": "httpRequest.headers",
"key_to_extract": "name",
"value_to_extract": "value"
}
}
| Parameter | Type | Required | Description |
|---|---|---|---|
type |
String | Yes | 프로세서 유형이에요. |
name |
String | No | 프로세서 이름이에요. |
is_enabled |
Boolean | No | 프로세서 활성화 여부예요. 기본값: false. |
operation.type |
String | Yes | 배열 프로세서 연산 유형이에요. |
operation.source |
String | Yes | 키-값 쌍을 추출할 배열의 속성 경로예요. |
operation.target |
String | No | 추출된 키-값 쌍을 받는 속성이에요. 지정하지 않으면 추출된 속성이 로그의 루트 레벨에 추가돼요. |
operation.key_to_extract |
String | Yes | 각 배열 요소에서 추출될 속성의 이름을 담는 키예요. |
operation.value_to_extract |
String | Yes | 각 배열 요소에서 추출될 속성의 값을 담는 키예요. |
operation.override_on_conflict |
Boolean | No | 대상 속성이 이미 설정되어 있을 때 덮어쓸지 여부예요. 기본값: false. |
더 알아보기 (Learn more)
추가로 도움이 되는 문서, 링크, 아티클: