4.3. 프로세서


프로세서는 수신된 데이터와 내보내진 데이터를 처리합니다. 프로세서는 선택 사항입니다. 기본적으로 프로세서는 사용할 수 없습니다. 모든 데이터 소스에 대해 프로세서가 활성화되어 있어야 합니다. 모든 프로세서가 모든 데이터 소스를 지원하는 것은 아닙니다. 데이터 소스에 따라 여러 프로세서가 활성화될 수 있습니다. 프로세서의 순서가 중요합니다.

현재 OpenTelemetry의 Red Hat 빌드에서 사용 가능한 일반 공급 및 기술 미리 보기 프로세서는 다음과 같습니다.

4.3.1. 배치 프로세서

배치 프로세서는 원격 측정 정보를 전송하는 데 필요한 나가는 연결 수를 줄이기 위해 추적 및 메트릭을 일괄 처리합니다.

Batch Processor를 사용할 때 OpenTelemetry Collector 사용자 정의 리소스의 예

# ...
  config:
    processors:
      batch:
        timeout: 5s
        send_batch_max_size: 10000
    service:
      pipelines:
        traces:
          processors: [batch]
        metrics:
          processors: [batch]
# ...

Expand
표 4.2. 배치 프로세서에서 사용하는 매개변수
매개변수설명기본

timeout

특정 시간이 지난 후 배치 크기에 관계없이 배치를 보냅니다.

200ms

send_batch_size

지정된 수의 범위 또는 메트릭 후에 원격 분석 데이터의 배치를 보냅니다.

8192

send_batch_max_size

배치의 최대 허용 크기입니다. send_batch_size 보다 크거나 같아야 합니다.

0

metadata_keys

활성화하면 client.Metadata에 있는 각 고유한 값 집합에 대해 배처 인스턴스가 생성됩니다.

[]

metadata_cardinality_limit

metadata_keys가 채워지면 이 구성은 프로세스 기간 동안 처리된 고유한 메타데이터 키-값 조합의 수를 제한합니다.

1000

4.3.2. 메모리 제한 프로세서

메모리 리미터 프로세서는 수집기의 메모리 사용량을 주기적으로 확인하고 소프트 메모리 제한에 도달하면 데이터 처리를 일시 중지합니다. 이 프로세서는 추적, 메트릭, 로그를 지원합니다. 일반적으로 수신기인 이전 구성 요소는 동일한 데이터를 다시 보내려고 시도하고 들어오는 데이터에 백프레셔를 적용할 수 있습니다. 메모리 사용량이 하드 한도를 초과하면 메모리 리미터 프로세서가 가비지 수집을 강제로 실행합니다.

메모리 리미터 프로세서를 사용할 때 OpenTelemetry Collector 사용자 정의 리소스의 예

# ...
  config:
    processors:
      memory_limiter:
        check_interval: 1s
        limit_mib: 4000
        spike_limit_mib: 800
    service:
      pipelines:
        traces:
          processors: [batch]
        metrics:
          processors: [batch]
# ...

Expand
표 4.3. 메모리 리미터 프로세서에서 사용하는 매개변수
매개변수설명기본

check_interval

메모리 사용량 측정 사이의 시간. 최적값은 1s 입니다. 트래픽 패턴이 불규칙한 경우 check_interval을 줄이거나 spike_limit_mib를 늘릴 수 있습니다.

0s

limit_mib

힙에 할당된 MiB 단위의 최대 메모리 양인 하드 제한입니다. 일반적으로 OpenTelemetry Collector의 총 메모리 사용량은 이 값보다 약 50MiB 더 큽니다.

0

spike_limit_mib

스파이크 한도는 MiB 단위의 메모리 사용량에서 예상되는 최대 스파이크입니다. 최적의 값은 limit_mib 의 약 20%입니다. 소프트 한도를 계산하려면 limit_mib 에서 spike_limit_mib를 빼세요.

limit_mib의 20%

limit_percentage

limit_mib 와 동일하지만 사용 가능한 총 메모리의 백분율로 표시됩니다. limit_mib 설정은 이 설정보다 우선합니다.

0

spike_limit_percentage

spike_limit_mib 와 동일하지만 사용 가능한 총 메모리의 백분율로 표시됩니다. limit_percentage 설정과 함께 사용하도록 의도되었습니다.

0

4.3.3. 리소스 탐지 프로세서

리소스 감지 프로세서는 OpenTelemetry의 리소스 의미 표준에 맞춰 호스트 리소스 세부 정보를 식별합니다. 감지된 정보를 사용하여 이 프로세서는 원격 분석 데이터에서 리소스 값을 추가하거나 교체할 수 있습니다. 이 프로세서는 추적 및 메트릭을 지원합니다. 이 프로세서는 Docket 메타데이터 감지기나 OTEL_RESOURCE_ATTRIBUTES 환경 변수 감지기와 같은 여러 감지기와 함께 사용할 수 있습니다.

중요

리소스 감지 프로세서는 기술 미리 보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.

리소스 탐지 프로세서에 필요한 OpenShift Container Platform 권한

kind: ClusterRole
metadata:
  name: otel-collector
rules:
- apiGroups: ["config.openshift.io"]
  resources: ["infrastructures", "infrastructures/status"]
  verbs: ["get", "watch", "list"]
# ...

리소스 탐지 프로세서를 사용한 OpenTelemetry 수집기

# ...
  config:
    processors:
      resourcedetection:
        detectors: [openshift]
        override: true
    service:
      pipelines:
        traces:
          processors: [resourcedetection]
        metrics:
          processors: [resourcedetection]
# ...

환경 변수 감지기를 사용하여 리소스 감지 프로세서를 사용하는 OpenTelemetry Collector

# ...
  config:
    processors:
      resourcedetection/env:
        detectors: [env] 
1

        timeout: 2s
        override: false
# ...

1
어떤 감지기를 사용할지 지정합니다. 이 예에서는 환경 감지기가 지정됩니다.

4.3.4. 속성 프로세서

속성 프로세서는 스팬, 로그 또는 메트릭의 속성을 수정할 수 있습니다. 이 프로세서를 구성하여 입력 데이터를 필터링하고 일치시키고 특정 작업에 대해 해당 데이터를 포함하거나 제외할 수 있습니다.

이 프로세서는 작업 목록에 따라 작동하며 구성에 지정된 순서대로 작업을 실행합니다. 다음 작업이 지원됩니다.

끼워 넣다
지정된 키가 아직 존재하지 않으면 입력 데이터에 새 속성을 삽입합니다.
업데이트
키가 이미 존재하는 경우 입력 데이터의 속성을 업데이트합니다.
업서트
삽입 및 업데이트 작업을 결합합니다. 키가 아직 없으면 새 속성을 삽입합니다. 키가 이미 있으면 속성을 업데이트합니다.
삭제
입력 데이터에서 속성을 제거합니다.
해시시
기존 속성 값을 SHA1로 해시합니다.
extract
규칙에 정의된 대상 키에서 입력 키까지 정규 표현식 규칙을 사용하여 값을 추출합니다. 대상 키가 이미 존재하는 경우 Span Processor의 to_attributes 설정과 유사하게 기존 속성을 소스로 재정의합니다.
convert
기존 속성을 지정된 유형으로 변환합니다.

속성 프로세서를 사용하는 OpenTelemetry Collector

# ...
  config:
    processors:
      attributes/example:
        actions:
          - key: db.table
            action: delete
          - key: redacted_span
            value: true
            action: upsert
          - key: copy_key
            from_attribute: key_original
            action: update
          - key: account_id
            value: 2245
            action: insert
          - key: account_password
            action: delete
          - key: account_email
            action: hash
          - key: http.status_code
            action: convert
            converted_type: int
# ...

4.3.5. 리소스 프로세서

리소스 프로세서는 리소스 속성에 변경 사항을 적용합니다. 이 프로세서는 추적, 메트릭, 로그를 지원합니다.

리소스 프로세서를 사용하는 OpenTelemetry Collector

# ...
  config:
    processors:
      attributes:
      - key: cloud.availability_zone
        value: "zone-1"
        action: upsert
      - key: k8s.cluster.name
        from_attribute: k8s-cluster
        action: insert
      - key: redundant-attribute
        action: delete
# ...

속성은 속성 삭제, 속성 삽입, 속성 업서트 등 리소스 속성에 적용되는 작업을 나타냅니다.

4.3.6. 스팬 프로세서

스팬 프로세서는 스팬 이름을 해당 속성에 따라 수정하거나 스팬 이름에서 스팬 속성을 추출합니다. 이 프로세서는 스팬 상태를 변경하고 스팬을 포함하거나 제외할 수도 있습니다. 이 프로세서는 추적을 지원합니다.

스팬 이름을 바꾸려면 from_attributes 구성을 사용하여 새 이름에 대한 속성을 지정해야 합니다.

중요

Span Processor는 기술 미리보기 기능일 뿐입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.

Span Processor를 사용하여 Span 이름 변경을 위한 OpenTelemetry Collector

# ...
  config:
    processors:
      span:
        name:
          from_attributes: [<key1>, <key2>, ...] 
1

          separator: <value> 
2

# ...

1
새로운 스팬 이름을 형성하는 키를 정의합니다.
2
선택적인 구분 기호입니다.

이 프로세서를 사용하면 스팬 이름에서 속성을 추출할 수 있습니다.

Span 이름에서 속성을 추출하기 위해 Span Processor를 사용하는 OpenTelemetry Collector

# ...
  config:
    processors:
      span/to_attributes:
        name:
          to_attributes:
            rules:
              - ^\/api\/v1\/document\/(?P<documentId>.*)\/update$ 
1

# ...

1
이 규칙은 추출을 실행하는 방법을 정의합니다. 더 많은 규칙을 정의할 수 있습니다. 예를 들어, 이 경우 정규 표현식이 이름과 일치하면 documentID 속성이 생성됩니다. 이 예에서 입력 스팬 이름이 /api/v1/document/12345678/update 이면 출력 스팬 이름은 /api/v1/document/{documentId}/update 가 되고 , 새로운 "documentId"="12345678" 속성이 스팬에 추가됩니다.

스팬 상태를 수정할 수 있습니다.

상태 변경을 위해 Span Processor를 사용하는 OpenTelemetry Collector

# ...
  config:
    processors:
      span/set_status:
        status:
          code: Error
          description: "<error_description>"
# ...

4.3.7. 쿠버네티스 속성 프로세서

Kubernetes 속성 프로세서는 Kubernetes 메타데이터를 사용하여 스팬, 메트릭 및 로그 리소스 속성을 자동으로 구성할 수 있도록 합니다. 이 프로세서는 추적, 메트릭, 로그를 지원합니다. 이 프로세서는 Kubernetes 리소스를 자동으로 식별하고, 리소스에서 메타데이터를 추출하고, 추출된 메타데이터를 리소스 속성으로 관련 스팬, 메트릭 및 로그에 통합합니다. Kubernetes API를 활용하여 클러스터 내에서 작동하는 모든 Pod를 검색하고 해당 Pod의 IP 주소, Pod UID 및 기타 관련 메타데이터의 기록을 유지 관리합니다.

Kubernetes 속성 프로세서에 필요한 최소 OpenShift 컨테이너 플랫폼 권한

kind: ClusterRole
metadata:
  name: otel-collector
rules:
  - apiGroups: ['']
    resources: ['pods', 'namespaces']
    verbs: ['get', 'watch', 'list']
  - apiGroups: ['apps']
    resources: ['replicasets']
    verbs: ['get', 'watch', 'list']
# ...

Kubernetes 속성 프로세서를 사용하는 OpenTelemetry Collector

# ...
  config:
    processors:
         k8sattributes:
             filter:
                 node_from_env_var: KUBE_NODE_NAME
# ...

4.3.8. 필터 프로세서

필터 프로세서는 OpenTelemetry Transformation Language를 활용하여 원격 측정 데이터를 삭제하기 위한 기준을 설정합니다. 이러한 조건 중 하나라도 충족되면 원격 측정 데이터는 삭제됩니다. 논리적 OR 연산자를 사용하여 조건을 결합할 수 있습니다. 이 프로세서는 추적, 메트릭, 로그를 지원합니다.

중요

필터 프로세서는 기술 미리보기 기능일 뿐입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.

필터 프로세서가 활성화된 OpenTelemetry Collector 사용자 지정 리소스

# ...
  config:
    processors:
      filter/ottl:
        error_mode: ignore 
1

        traces:
          span:
          - 'attributes["container.name"] == "app_container_1"' 
2

          - 'resource.attributes["host.name"] == "localhost"' 
3

# ...

1
오류 모드를 정의합니다. ignore 로 설정하면 조건에서 반환된 오류를 무시합니다. 전파 되도록 설정하면 파이프라인을 통해 오류가 반환됩니다. 오류로 인해 페이로드가 수집기에서 삭제되었습니다.
2
container.name == app_container_1 속성이 있는 스팬을 필터링합니다.
3
host.name == localhost 리소스 속성이 있는 스팬을 필터링합니다.

4.3.9. 누적-델타 프로세서

누적-델타 프로세서는 단조적, 누적 합, 히스토그램 측정 항목을 단조 델타 측정 항목으로 변환합니다.

include: 또는 exclude: 필드를 사용하고 strict 또는 regexp 메트릭 이름 일치를 지정하여 메트릭을 필터링할 수 있습니다.

이 프로세서는 이전 메트릭 값을 저장하여 델타를 계산하므로 여러 개의 컬렉터를 배포하는 대신 단일 상태 컬렉터 인스턴스로 메트릭 데이터를 보내도록 메트릭 소스를 설정해야 합니다.

이 프로세서는 비단조 합과 지수 히스토그램을 변환하지 않습니다.

중요

누적-델타 프로세서는 기술 미리보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.

누적-델타 프로세서가 활성화된 OpenTelemetry Collector 사용자 지정 리소스의 예

# ...
mode: sidecar 
1

config:
  processors:
    cumulativetodelta:
      include: 
2

        match_type: strict 
3

        metrics: 
4

        - <metric_1_name>
        - <metric_2_name>
      exclude: 
5

        match_type: regexp
        metrics:
        - "<regular_expression_for_metric_names>"
# ...

1
수집기의 수명 주기를 메트릭 소스에 연결하려면 누적 시간성 메트릭을 내보내는 애플리케이션에 대한 사이드카로 수집기를 실행할 수 있습니다.
2
선택 사항: 이 스탠자에서 변환하려는 메트릭을 명시적으로 정의하여 프로세서가 변환하는 메트릭을 제한할 수 있습니다. 이 필드를 생략하면 프로세서는 제외 필드에 나열된 메트릭을 제외한 모든 메트릭을 변환합니다.
3
strict 매개변수를 사용하여 메트릭 필드에 제공한 값을 정확한 일치로 정의하거나 regex 매개변수를 사용하여 정규 표현식으로 정의합니다.
4
변환하려는 메트릭의 이름을 나열합니다. 프로세서는 정확한 일치 또는 정규 표현식에 대한 일치를 변환합니다. 메트릭이 포함 필터와 제외 필터 모두와 일치하는 경우 제외 필터가 우선합니다.
5
선택 사항: 여기에서 특정 측정 항목을 명확하게 정의하여 해당 측정 항목을 전환에서 제외할 수 있습니다.

4.3.10. 속성별 그룹화 프로세서

속성별 그룹화 프로세서는 동일한 속성을 공유하는 모든 스팬, 로그 레코드 및 메트릭 데이터 포인트를 해당 속성과 일치하는 리소스에 다시 할당하여 그룹화합니다.

중요

속성별 그룹화 프로세서는 기술 미리보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.

최소한 이 프로세서를 구성하려면 다음 예와 같이 스팬, 로그 레코드 또는 메트릭 데이터 포인트를 그룹화하는 데 사용할 속성 키 배열을 지정해야 합니다.

Group-by-Attributes 프로세서를 사용할 때 OpenTelemetry Collector 사용자 정의 리소스의 예

# ...
  config:
    processors:
      groupbyattrs:
        keys: 
1

          - <key1> 
2

          - <key2>
# ...

1
그룹화할 속성 키를 지정합니다.
2
처리된 스팬, 로그 레코드 또는 메트릭 데이터 포인트에 지정된 속성 키 중 하나 이상이 포함되어 있는 경우 동일한 속성 값을 공유하는 리소스에 다시 할당됩니다. 해당 리소스가 없으면 새 리소스가 생성됩니다. 지정된 속성 키 중 어느 것도 처리된 스팬, 로그 레코드 또는 메트릭 데이터 포인트에 없는 경우 현재 리소스와 연결된 상태로 유지됩니다. 동일한 리소스의 여러 인스턴스가 통합됩니다.

4.3.11. 변환 프로세서

변환 프로세서는 지정된 규칙과 OpenTelemetry Transformation Language(OTTL) 에 따라 원격 측정 데이터를 수정할 수 있도록 합니다. 각 신호 유형에 대해 프로세서는 특정 OTTL Context 유형과 관련된 일련의 조건 및 문을 처리한 다음 구성에 지정된 대로 들어오는 Telemetry 데이터에서 순서대로 실행합니다. 각 조건 및 설명은 다양한 함수를 사용하여 Telemetry 데이터에 액세스하고 수정할 수 있으므로 함수를 실행할지 여부를 지정할 수 있습니다.

모든 설명은 OTTL에 작성됩니다. 다양한 신호, 추적, 메트릭 및 로그에 대해 여러 컨텍스트 문을 구성할 수 있습니다. 컨텍스트 유형의 값은 관련 문을 해석할 때 프로세서가 사용해야 하는 OTTL Context를 지정합니다.

중요

변환 프로세서는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.

구성 요약

# ...
config:
    processors:
      transform:
        error_mode: ignore 
1

        <trace|metric|log>_statements: 
2

          - context: <string> 
3

            conditions:  
4

              - <string>
              - <string>
            statements: 
5

              - <string>
              - <string>
              - <string>
          - context: <string>
            statements:
              - <string>
              - <string>
              - <string>
# ...

1
선택 사항: "선택적인 error_mode 필드의 값"을 참조하십시오.
2
변환할 신호를 나타냅니다.
3
다음 표 " context 필드 값"을 참조하세요.
4
선택 사항: 변환을 수행하기 위한 조건입니다.

Transform Processor를 사용할 때 OpenTelemetry Collector 사용자 정의 리소스의 예

# ...
  config:
    transform:
      error_mode: ignore
      trace_statements: 
1

        - context: resource
          statements:
            - keep_keys(attributes, ["service.name", "service.namespace", "cloud.region", "process.command_line"]) 
2

            - replace_pattern(attributes["process.command_line"], "password\\=[^\\s]*(\\s?)", "password=***") 
3

            - limit(attributes, 100, [])
            - truncate_all(attributes, 4096)
        - context: span 
4

          statements:
            - set(status.code, 1) where attributes["http.path"] == "/health"
            - set(name, attributes["http.route"])
            - replace_match(attributes["http.target"], "/user/*/list/*", "/user/{userId}/list/{listId}")
            - limit(attributes, 100, [])
            - truncate_all(attributes, 4096)
# ...

1
추적 신호를 변환합니다.
2
리소스에 대한 키를 유지합니다.
3
속성을 바꾸고 암호 필드의 문자열 문자를 별표로 대체합니다.
4
범위 수준에서 변환을 수행합니다.
Expand
표 4.4. 컨텍스트 필드의 값
신호 정책유효한 컨텍스트

trace_statements

resource, scope, span, spanevent

metric_statements

리소스 , 범위 , 메트릭 , 데이터 포인트

log_statements

리소스 , 범위 , 로그

Expand
표 4.5. 선택적 error_mode 필드에 대한 값
현재의설명

Ignore

명령문에서 반환된 오류를 무시하고 기록한 후 다음 명령문을 계속 진행합니다.

조용한

명령문에서 반환된 오류를 무시하고 기록하지 않은 후 다음 명령문을 계속 진행합니다.

propagate

파이프라인을 통해 오류를 반환하고 페이로드를 삭제합니다. 암묵적 불이행.

4.3.12. 테일 샘플링 프로세서

Tail Sampling Processor는 모든 스팬이 완료되면 사용자 정의 정책에 따라 추적을 샘플링합니다. 꼬리 기반 샘플링을 사용하면 관심 있는 흔적을 필터링하고 데이터 수집 및 저장 비용을 줄일 수 있습니다.

중요

테일 샘플링 프로세서는 기술 미리보기 기능일 뿐입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.

이 프로세서는 스팬을 새로운 배치로 다시 조립하고 스팬의 원래 컨텍스트를 제거합니다.

작은 정보
  • 파이프라인에서 이 프로세서를 컨텍스트에 의존하는 모든 프로세서의 다운스트림에 배치합니다. 예를 들어 Kubernetes 속성 프로세서 뒤에 배치합니다.
  • Collector를 확장하는 경우 하나의 Collector 인스턴스가 동일한 추적의 모든 범위를 수신하여 이 프로세서가 지정된 샘플링 정책에 따라 올바른 샘플링 결정을 내릴 수 있도록 해야 합니다. 이를 달성하려면 두 계층의 수집기를 설정해야 합니다. 첫 번째 계층에는 로드 밸런싱 내보내기 도구를 사용하고, 두 번째 계층에는 테일 샘플링 프로세서를 사용합니다.

Tail Sampling Processor를 사용할 때 OpenTelemetry Collector 사용자 정의 리소스의 예

# ...
config:
  processors:
    tail_sampling: 
1

      decision_wait: 30s 
2

      num_traces: 50000 
3

      expected_new_traces_per_sec: 10 
4

      policies: 
5

        [
          {
            <definition_of_policy_1>
          },
          {
            <definition_of_policy_2>
          },
          {
            <definition_of_policy_3>
          },
        ]
# ...

1
프로세서 이름.
2
선택 사항: 프로세서가 각 추적에 대한 샘플링 결정을 내리기 전의 첫 번째 스팬 시간부터 계산되는 결정 지연 시간입니다. 기본값은 30초 입니다.
3
선택 사항: 메모리에 보관되는 추적 수. 기본값은 :8888 입니다.
4
선택 사항: 초당 예상되는 새로운 추적 수로, 데이터 구조를 할당하는 데 유용합니다. 기본값은 0 입니다.
5
추적 평가 정책의 정의. 프로세서는 지정된 모든 정책에 대해 각 추적을 평가한 다음 추적을 샘플링하거나 삭제합니다.

다음 목록에서 정책을 선택하고 결합할 수 있습니다.

  • 다음 정책은 모든 추적을 샘플링합니다.

    # ...
          policies:
            [
              {
                name: <always_sample_policy>,
                type: always_sample,
              },
            ]
    # ...
  • 다음 정책은 지정된 범위 내의 기간에 대한 추적만 샘플링합니다.

    # ...
          policies:
            [
              {
                name: <latency_policy>,
                type: latency,
                latency: {threshold_ms: 5000, upper_threshold_ms: 10000} 
    1
    
              },
            ]
    # ...
    1
    제공된 500010000 값은 예시입니다. 가장 빠른 시작 시간 값과 가장 늦은 종료 시간 값을 살펴보면 원하는 대기 시간 값을 추정할 수 있습니다. upper_threshold_ms 필드를 생략하면 이 정책은 지정된 threshold_ms 값보다 큰 모든 대기 시간을 샘플링합니다.
  • 다음 정책 샘플은 리소스 및 레코드 속성에 대한 숫자 값 일치를 기준으로 추적합니다.

    # ...
          policies:
            [
              {
                name: <numeric_attribute_policy>,
                type: numeric_attribute,
                numeric_attribute: {key: <key1>, min_value: 50, max_value: 100} 
    1
    
              },
            ]
    # ...
    1
    제공된 50100 값은 예시입니다.
  • 다음 정책은 추적의 일부 비율만 샘플링합니다.

    # ...
          policies:
            [
              {
                name: <probabilistic_policy>,
                type: probabilistic,
                probabilistic: {sampling_percentage: 10} 
    1
    
              },
            ]
    # ...
    1
    제공된 10 값은 예시입니다.
  • 다음 정책 샘플은 상태 코드( OK , ERROR 또는 UNSET) 에 따라 추적을 수행합니다.

    # ...
          policies:
            [
              {
                name: <status_code_policy>,
                type: status_code,
                status_code: {status_codes: [ERROR, UNSET]}
              },
            ]
    # ...
  • 다음 정책 샘플은 리소스 및 레코드 속성에 대한 문자열 값 일치를 기준으로 추적합니다.

    # ...
          policies:
            [
              {
                name: <string_attribute_policy>,
                type: string_attribute,
                string_attribute: {key: <key2>, values: [<value1>, <val>*], enabled_regex_matching: true, cache_max_size: 10} 
    1
    
              },
            ]
    # ...
    1
    이 정책 정의는 정확한 값 일치와 정규 표현식 값 일치를 모두 지원합니다. cache_max_size 필드에 제공된 10 값은 예시입니다.
  • 다음 정책 샘플은 초당 스팬 비율로 추적합니다.

    # ...
          policies:
            [
              {
                name: <rate_limiting_policy>,
                type: rate_limiting,
                rate_limiting: {spans_per_second: 35} 
    1
    
              },
            ]
    # ...
    1
    제공된 35 값은 예시입니다.
  • 다음 정책 샘플은 최소 및 최대 스팬 수를 포함하여 추적을 수행합니다.

    # ...
          policies:
            [
              {
                name: <span_count_policy>,
                type: span_count,
                span_count: {min_spans: 2, max_spans: 20} 
    1
    
              },
            ]
    # ...
    1
    추적의 모든 범위의 합이 범위 임계값을 벗어나면 추적이 샘플링되지 않습니다. 제공된 220 값은 예시입니다.
  • 다음 정책 샘플은 TraceState 값 일치에 따른 추적을 수행합니다.

    # ...
          policies:
            [
              {
                name: <trace_state_policy>,
                type: trace_state,
                trace_state: { key: <key3>, values: [<value1>, <value2>] }
              },
            ]
    # ...
  • 다음 정책 샘플은 부울 속성(리소스 및 레코드)을 기준으로 추적합니다.

    # ...
          policies:
            [
              {
                name: <bool_attribute_policy>,
                type: boolean_attribute,
                boolean_attribute: {key: <key4>, value: true}
              },
            ]
    # ...
  • 다음 정책 샘플은 스팬 또는 스팬 이벤트에 대한 주어진 부울 OTTL 조건에 따라 추적을 수행합니다.

    # ...
          policies:
            [
              {
                name: <ottl_policy>,
                type: ottl_condition,
                ottl_condition: {
                  error_mode: ignore,
                  span: [
                    "attributes[\"<test_attr_key_1>\"] == \"<test_attr_value_1>\"",
                    "attributes[\"<test_attr_key_2>\"] != \"<test_attr_value_1>\"",
                  ],
                  spanevent: [
                    "name != \"<test_span_event_name>\"",
                    "attributes[\"<test_event_attr_key_2>\"] != \"<test_event_attr_value_1>\"",
                  ]
                }
              },
            ]
    # ...
  • 다음은 여러 정책을 조합하여 추적을 샘플링하는 AND 정책입니다.

    # ...
          policies:
            [
              {
                name: <and_policy>,
                type: and,
                and: {
                  and_sub_policy:
                  [
                    {
                      name: <and_policy_1>,
                      type: numeric_attribute,
                      numeric_attribute: { key: <key1>, min_value: 50, max_value: 100 } 
    1
    
                    },
                    {
                      name: <and_policy_2>,
                      type: string_attribute,
                      string_attribute: { key: <key2>, values: [ <value1>, <value2> ] }
                    },
                  ]
                }
              },
            ]
    # ...
    1
    제공된 50100 값은 예시입니다.
  • 다음은 여러 정책을 조합하여 샘플링에서 추적을 삭제하는 DROP 정책입니다.

    # ...
          policies:
            [
              {
                name: <drop_policy>,
                type: drop,
                drop: {
                  drop_sub_policy:
                  [
                    {
                      name: <drop_policy_1>,
                      type: string_attribute,
                      string_attribute: {key: url.path, values: [\/health, \/metrics], enabled_regex_matching: true}
                    }
                  ]
                }
              },
            ]
    # ...
  • 다음 정책 샘플은 이전 샘플러의 조합과 샘플러당 순서 및 속도 할당을 통해 추적됩니다.

    # ...
          policies:
            [
              {
                name: <composite_policy>,
                type: composite,
                composite:
                  {
                    max_total_spans_per_second: 100, 
    1
    
                    policy_order: [<composite_policy_1>, <composite_policy_2>, <composite_policy_3>],
                    composite_sub_policy:
                      [
                        {
                          name: <composite_policy_1>,
                          type: numeric_attribute,
                          numeric_attribute: {key: <key1>, min_value: 50}
                        },
                        {
                          name: <composite_policy_2>,
                          type: string_attribute,
                          string_attribute: {key: <key2>, values: [<value1>, <value2>]}
                        },
                        {
                          name: <composite_policy_3>,
                          type: always_sample
                        }
                      ],
                      rate_allocation:
                      [
                        {
                          policy: <composite_policy_1>,
                          percent: 50 
    2
    
                        },
                        {
                          policy: <composite_policy_2>,
                          percent: 25
                        }
                      ]
                  }
              },
            ]
    # ...
    1 2
    적용된 정책 순서에 따라 범위의 백분율을 할당합니다. 예를 들어, max_total_spans_per_second 필드에 100 값을 설정하면 rate_allocation 섹션에서 다음 값을 설정할 수 있습니다. <composite_policy_1> 정책 섹션에서 50 % 값을 설정하여 초당 50개의 스팬을 할당하고, <composite_policy_2> 정책 섹션에서 25 % 값을 설정하여 초당 25개의 스팬을 할당합니다. 남은 용량을 채우려면 name: <composite_policy_3> 섹션의 type 필드에 always_sample 값을 설정할 수 있습니다.

4.3.13. 확률적 샘플링 프로세서

대량의 원격 측정 데이터를 처리하고 처리되는 데이터 볼륨을 줄여 비용을 절감하려는 경우 테일 샘플링 프로세서 대신 확률적 샘플링 프로세서를 사용할 수 있습니다.

중요

확률적 샘플링 프로세서는 기술 미리보기 기능일 뿐입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.

프로세서는 추적 범위 또는 로그 레코드의 지정된 비율을 상태 없이 요청별로 샘플링합니다.

프로세서는 사용된 유효 샘플링 확률에 대한 정보를 원격 측정 데이터에 추가합니다.

  • 추적 범위에서 프로세서는 W3C 추적 컨텍스트 tracestate 필드에 임계값과 선택적 난수 정보를 인코딩합니다.
  • 로그 레코드에서 프로세서는 임계값과 무작위성 정보를 속성으로 인코딩합니다.

다음은 추적 범위를 샘플링하기 위한 확률적 샘플링 프로세서에 대한 OpenTelemetryCollector 사용자 정의 리소스 구성의 예입니다.

# ...
  config:
    processors:
      probabilistic_sampler: 
1

        sampling_percentage: 15.3 
2

        mode: "proportional" 
3

        hash_seed: 22 
4

        sampling_precision: 14 
5

        fail_closed: true 
6

# ...
service:
  pipelines:
    traces:
      processors: [probabilistic_sampler]
# ...
1
추적 파이프라인의 경우 무작위성의 원인은 스팬 추적 ID의 해시된 값입니다.
2
필수 항목입니다. 샘플링할 스팬의 32비트 부동 소수점 백분율 값을 허용합니다.
3
선택 사항: 샘플링 논리 모드에 지원되는 문자열 값(기본 hash_seed , proportional 또는 equalizing) 을 허용합니다. hash_seed 모드는 Fowler–Noll–Vo(FNV) 해시 함수를 추적 ID에 적용하고 해시된 값을 샘플링 비율 값과 비교합니다. 추적 ID 이외의 원격 측정 단위로 hash_seed 모드를 사용할 수도 있습니다. 비례 모드는 전체 범위 수량에 대한 엄격한 확률 기반 비율을 샘플링하며, OpenTelemetry 및 World Wide Web Consortium 사양을 기반으로 합니다. 평준화 모드는 파이프라인 전체에서 샘플링 확률을 최소값으로 낮추거나 클라이언트 SDK에 혼합 샘플링 구성이 있는 Collector 배포에서 균일한 샘플링 확률을 적용하는 데 유용합니다.
4
선택 사항: 해시 알고리즘을 계산하는 데 사용되는 32비트 부호 없는 정수를 허용합니다. 이 필드가 구성되지 않으면 기본 시드 값은 0 입니다. 여러 계층의 Collector 인스턴스를 사용하는 경우 동일 계층의 모든 Collector를 동일한 시드 값으로 구성해야 합니다.
5
선택 사항: 샘플링 임계값을 인코딩하는 데 사용되는 16진수 숫자의 수를 결정합니다. 정수 값을 허용합니다. 지원되는 값은 1 ~ 14 입니다. 기본값 4를 사용하면 임계값에 16개 이상의 유효 비트가 포함되어 있는 경우 임계값이 반올림됩니다. 이는 56비트를 사용하는 비례 모드의 경우입니다. 비례 모드를 선택하는 경우 이전 샘플러에서 적용한 정밀도를 유지하기 위해 더 큰 값을 사용합니다.
6
선택 사항: 샘플링 오류가 있는 범위를 거부합니다. 부울 값을 허용합니다. 기본값은 true입니다.

다음은 로그 레코드를 샘플링하기 위한 확률적 샘플링 프로세서에 대한 OpenTelemetryCollector 사용자 정의 리소스 구성의 예입니다.

# ...
  config:
    processors:
      probabilistic_sampler/logs:
        sampling_percentage: 15.3 
1

        mode: "hash_seed" 
2

        hash_seed: 22 
3

        sampling_precision: 4 
4

        attribute_source: "record" 
5

        from_attribute: "<log_record_attribute_name>" 
6

        fail_closed: true 
7

# ...
service:
  pipelines:
    logs:
      processors: [ probabilistic_sampler/logs ]
# ...
1
필수 항목입니다. 샘플링할 스팬의 32비트 부동 소수점 백분율 값을 허용합니다.
2
선택 사항: 샘플링 논리 모드에 지원되는 문자열 값(기본 hash_seed , equalizing 또는 proportional) 을 허용합니다. hash_seed 모드는 추적 ID 또는 지정된 로그 레코드 속성에 Fowler–Noll–Vo(FNV) 해시 함수를 적용한 다음 해시된 값을 샘플링 비율 값과 비교하여 가중치를 부여합니다. 추적 ID 이외의 다른 원격 측정 단위와 함께 hash_seed 모드를 사용할 수도 있습니다. 예를 들어, service.instance.id 리소스 속성을 사용하여 포드의 일정 비율에서 로그 레코드를 수집할 수 있습니다. 평준화 모드는 파이프라인 전체에서 샘플링 확률을 최소값으로 낮추거나 클라이언트 SDK에 혼합 샘플링 구성이 있는 Collector 배포에서 균일한 샘플링 확률을 적용하는 데 유용합니다. 비례 모드는 전체 범위 수량에 대한 엄격한 확률 기반 비율을 샘플링하며, OpenTelemetry 및 World Wide Web Consortium 사양을 기반으로 합니다.
3
선택 사항: 해시 알고리즘을 계산하는 데 사용되는 32비트 부호 없는 정수를 허용합니다. 이 필드가 구성되지 않으면 기본 시드 값은 0 입니다. 여러 계층의 Collector 인스턴스를 사용하는 경우 동일 계층의 모든 Collector를 동일한 시드 값으로 구성해야 합니다.
4
선택 사항: 샘플링 임계값을 인코딩하는 데 사용되는 16진수 숫자의 수를 결정합니다. 정수 값을 허용합니다. 지원되는 값은 1 ~ 14 입니다. 기본값 4를 사용하면 임계값에 16개 이상의 유효 비트가 포함되어 있는 경우 임계값이 반올림됩니다. 이는 56비트를 사용하는 비례 모드의 경우입니다. 비례 모드를 선택하는 경우 이전 샘플러에서 적용한 정밀도를 유지하기 위해 더 큰 값을 사용합니다.
5
선택 사항: from_attribute 에서 로그 레코드 속성을 찾을 위치를 정의합니다. 로그 레코드 속성은 무작위성의 소스로 사용됩니다. 기본 traceID 값이나 레코드 값을 수락합니다.
6
선택 사항: 샘플링 해시를 계산하는 데 사용되는 로그 레코드 속성의 이름(예: 고유한 로그 레코드 ID)입니다. 문자열 값을 허용합니다. 기본값은 다음과 같습니다. 추적 ID가 없거나 추적 ID 샘플링이 비활성화되었거나 attribute_source 필드가 레코드 값으로 설정된 상황에서 무작위성의 소스로 로그 레코드 속성을 지정해야 하는 경우에만 이 필드를 사용합니다.
7
선택 사항: 샘플링 오류가 있는 범위를 거부합니다. 부울 값을 허용합니다. 기본값은 true입니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동