본문 바로가기
WIKI 기술 지식 베이스

배열 프로세서 (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)

추가로 도움이 되는 문서, 링크, 아티클: