4.3. 프로세서


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

현재 OpenTelemetry의 Red Hat 빌드에서 다음 일반 가용성 및 기술 프리뷰 프로세서를 사용할 수 있습니다.

4.3.1. 배치 프로세서

Batch Processor는 Telemetry 정보를 전송하는 데 필요한 발신 연결 수를 줄이기 위해 추적 및 지표를 일괄 처리합니다.

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

# ...
  config:
    processors:
      batch:
        timeout: 5s
        send_batch_max_size: 10000
    service:
      pipelines:
        traces:
          processors: [batch]
        metrics:
          processors: [batch]
# ...
Copy to Clipboard Toggle word wrap

Expand
표 4.2. Batch Processor에서 사용하는 매개변수
매개변수설명기본

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]
# ...
Copy to Clipboard Toggle word wrap

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

check_interval

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

0s

limit_mib

힙에 할당된 MiB 단위의 최대 메모리 양인 하드 제한입니다. 일반적으로 OpenTelemetry 수집기의 총 메모리 사용량은 이 값보다 약 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 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

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

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

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

# ...
  config:
    processors:
      resourcedetection:
        detectors: [openshift]
        override: true
    service:
      pipelines:
        traces:
          processors: [resourcedetection]
        metrics:
          processors: [resourcedetection]
# ...
Copy to Clipboard Toggle word wrap

환경 변수 탐지기와 함께 리소스 탐지 프로세서를 사용한 OpenTelemetry 수집기

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

        timeout: 2s
        override: false
# ...
Copy to Clipboard Toggle word wrap

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

4.3.4. 특성 프로세서

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

이 프로세서는 작업 목록에서 작동하며 구성에 지정된 순서대로 실행됩니다. 지원되는 작업은 다음과 같습니다.

삽입
지정된 키가 없는 경우 입력 데이터에 새 특성을 삽입합니다.
업데이트
키가 이미 존재하는 경우 입력 데이터의 속성을 업데이트합니다.
Upsert
삽입 및 업데이트 작업 결합: 키가 아직 없는 경우 새 특성을 삽입합니다. 키가 이미 있는 경우 속성을 업데이트합니다.
delete
입력 데이터에서 특성을 제거합니다.
hash
기존 속성 값을 SHA1로 해시합니다.
extract
입력 키에서 규칙에 정의된 대상 키로 정규식 규칙을 사용하여 값을 추출합니다. 대상 키가 이미 존재하는 경우 기존 특성을 소스로 사용하여 Span Processor's to_attributes 설정과 유사하게 재정의됩니다.
convert
기존 특성을 지정된 형식으로 변환합니다.Converts an existing attribute to a specified type.

특성 프로세서를 사용한 OpenTelemetry 수집기

# ...
  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
# ...
Copy to Clipboard Toggle word wrap

4.3.5. 리소스 프로세서

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

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

# ...
  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
# ...
Copy to Clipboard Toggle word wrap

속성은 특성 삭제, 특성 삽입 또는 특성 upsert와 같은 리소스 특성에 적용되는 작업을 나타냅니다.

4.3.6. 기간 프로세서

Span Processor는 특성을 기반으로 범위 이름을 수정하거나 범위 이름에서 범위 특성을 추출합니다. 이 프로세서는 범위 상태를 변경하고 범위를 포함하거나 제외할 수도 있습니다. 이 프로세서는 추적을 지원합니다.

범위 이름을 변경하려면 from_attributes 구성을 사용하여 새 이름에 속성을 지정해야 합니다.

중요

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

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

범위 이름을 변경하기 위한 Span Processor를 사용한 OpenTelemetry 수집기

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

          separator: <value> 
2

# ...
Copy to Clipboard Toggle word wrap

1
새 범위 이름을 구성할 키를 정의합니다.
2
선택적 구분 기호입니다.

이 프로세서를 사용하여 범위 이름에서 특성을 추출할 수 있습니다.

범위 이름에서 특성을 추출하기 위한 Span Processor를 사용하는 OpenTelemetry 수집기

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

# ...
Copy to Clipboard Toggle word wrap

1
이 규칙은 추출을 실행하는 방법을 정의합니다. 예를 들어 정규식이 이름과 일치하는 경우 documentID attibute 규칙을 정의할 수 있습니다. 이 예에서 입력 범위 이름이 /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>"
# ...
Copy to Clipboard Toggle word wrap

4.3.7. Kubernetes 속성 프로세서

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

Kubernetes 속성 프로세서에 필요한 최소 OpenShift Container Platform 권한

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

Kubernetes 속성 프로세서를 사용한 OpenTelemetry 수집기

# ...
  config:
    processors:
         k8sattributes:
             filter:
                 node_from_env_var: KUBE_NODE_NAME
# ...
Copy to Clipboard Toggle word wrap

4.3.8. 필터 프로세서

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

중요

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

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

활성화된 OTLP Exporter가 있는 OpenTelemetry 수집기 사용자 정의 리소스

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

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

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

# ...
Copy to Clipboard Toggle word wrap

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

4.3.9. cumulative-to-Delta Processor

Cumulative-to-Delta Processor는 monotonic, cumulative-sum 및 histogram 메트릭을 monotonic delta 메트릭으로 변환합니다.

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

이 프로세서는 이전 메트릭 값을 저장하여 delta를 계산하므로 지표 데이터를 여러 수집기 배포 대신 단일 상태 저장 수집기 인스턴스로 보내려면 메트릭 소스를 설정해야 합니다.

이 프로세서는 비모노닉 합계 및 기하급수 히스토그램을 변환하지 않습니다.

중요

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

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

Cumulative-to-Delta Processor가 활성화된 OpenTelemetry 수집기 사용자 정의 리소스의 예

# ...
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>"
# ...
Copy to Clipboard Toggle word wrap

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

4.3.10. group-by-Attributes 프로세서

Group-by-Attributes Processor는 해당 특성과 일치하는 리소스에 동일한 특성을 다시 할당하여 동일한 특성을 공유하는 모든 범위, 로그 레코드 및 메트릭 데이터 포인트를 그룹화합니다.

중요

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

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

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

Group-by-Attributes Processor를 사용할 때 OpenTelemetry Collector 사용자 정의 리소스의 예

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

          - <key1> 
2

          - <key2>
# ...
Copy to Clipboard Toggle word wrap

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

4.3.11. 변환 프로세서

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

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

중요

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

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

구성 요약

# ...
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>
# ...
Copy to Clipboard Toggle word wrap

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

변환 프로세서를 사용할 때 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)
# ...
Copy to Clipboard Toggle word wrap

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

trace_statements

리소스,범위, 범위 , 범위

metric_statements

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

log_statements

리소스,범위,로그

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

무시

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

음소거

문에서 반환된 로그 오류를 무시하고 다음 문을 계속합니다.

propagate

파이프라인에 오류를 반환하고 페이로드를 삭제합니다. 암시적 기본값.

4.3.12. tail Sampling Processor

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

중요

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

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

이 프로세서 재조정은 원래 컨텍스트의 새로운 배치 및 스트립으로 연장됩니다.

작은 정보
  • 파이프라인에서 컨텍스트를 사용하는 프로세서의 다운스트림(예: Kubernetes 특성 프로세서 이후)을 배치합니다.
  • 수집기를 스케일링하는 경우 하나의 수집기 인스턴스가 동일한 추적의 모든 범위를 수신하여 이 프로세서가 지정된 샘플링 정책에 따라 올바른 샘플링 결정을 내리도록 합니다. 이를 위해 로드 밸런싱 내보내기를 사용하여 수집기의 첫 번째 계층과 Tail Sampling Processor가 있는 수집기의 두 번째 계층을 설정하여 이 작업을 수행할 수 있습니다.

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>
          },
        ]
# ...
Copy to Clipboard Toggle word wrap

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

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

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

    # ...
          policies:
            [
              {
                name: <always_sample_policy>,
                type: always_sample,
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
  • 다음 정책에서는 지정된 범위 내에 있는 기간만 추적합니다.

    # ...
          policies:
            [
              {
                name: <latency_policy>,
                type: latency,
                latency: {threshold_ms: 5000, upper_threshold_ms: 10000} 
    1
    
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    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
    
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1
    제공된 50100 값은 예입니다.
  • 다음 정책은 추적의 백분율만 샘플링합니다.

    # ...
          policies:
            [
              {
                name: <probabilistic_policy>,
                type: probabilistic,
                probabilistic: {sampling_percentage: 10} 
    1
    
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1
    제공된 10 값은 예제입니다.
  • 상태 코드에서 추적을 샘플링하려면 OK,ERROR 또는 UNSET:

    # ...
          policies:
            [
              {
                name: <status_code_policy>,
                type: status_code,
                status_code: {status_codes: [ERROR, UNSET]}
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
  • 다음 정책은 리소스 및 레코드 특성에 대해 문자열 값의 추적을 샘플링합니다.

    # ...
          policies:
            [
              {
                name: <string_attribute_policy>,
                type: string_attribute,
                string_attribute: {key: <key2>, values: [<value1>, <val>*], enabled_regex_matching: true, cache_max_size: 10} 
    1
    
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1
    이 정책 정의는 정확한 및 정규식 값 일치를 모두 지원합니다. cache_max_size 필드에서 제공된 10 값은 예입니다.
  • 다음 정책에서는 초당 범위 비율에 따라 추적을 샘플링합니다.

    # ...
          policies:
            [
              {
                name: <rate_limiting_policy>,
                type: rate_limiting,
                rate_limiting: {spans_per_second: 35} 
    1
    
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1
    제공된 35 값은 예입니다.
  • 다음 정책에서는 다음을 포함하여 최소 및 최대 범위 수에 따라 추적을 샘플링합니다.

    # ...
          policies:
            [
              {
                name: <span_count_policy>,
                type: span_count,
                span_count: {min_spans: 2, max_spans: 20} 
    1
    
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1
    추적의 모든 범위 합계가 범위 임계값 외부에 있는 경우 추적이 샘플링되지 않습니다. 제공된 220 값은 예입니다.
  • TraceState 값의 추적을 샘플링하는 다음 정책은 다음과 같습니다.

    # ...
          policies:
            [
              {
                name: <trace_state_policy>,
                type: trace_state,
                trace_state: { key: <key3>, values: [<value1>, <value2>] }
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
  • 다음 정책은 부울 속성(리소스 및 레코드)을 통해 추적을 샘플링합니다.

    # ...
          policies:
            [
              {
                name: <bool_attribute_policy>,
                type: boolean_attribute,
                boolean_attribute: {key: <key4>, value: true}
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
  • 다음 정책은 범위 또는 기간 이벤트에 대해 지정된 부울 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>\"",
                  ]
                }
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
  • 다음은 여러 정책의 조합에 따라 추적을 샘플링하는 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> ] }
                    },
                  ]
                }
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    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}
                    }
                  ]
                }
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
  • 다음 정책은 이전 샘플러와 샘플당 주문 및 속도 할당과 함께 추적을 샘플링합니다.

    # ...
          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
                        }
                      ]
                  }
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1 2
    적용된 정책 순서에 따라 범위의 백분율을 할당합니다. 예를 들어 max_total_spans_per_second 필드에서 100 값을 설정하는 경우 rate_allocation 섹션에서 다음 값을 설정할 수 있습니다. 정책의 50 % 값: <composite_policy_1 > 섹션은 정책당 50개의 범위를 할당하고 정책의 25% 값을 할당하여 초당 25 개의 범위를 할당할 수 있습니다. 나머지 용량을 채우려면 < composite_policy_3> 섹션의 type 필드에 always_ sample 값을 설정할 수 있습니다.

4.3.13. probabilistic Sampling Processor

대량의 Telemetry 데이터를 처리하고 처리된 데이터 볼륨을 줄임으로써 비용을 줄이려는 경우 Tail Sampling Processor 대신 Probabilistic Sampling Processor를 사용할 수 있습니다.

중요

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

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

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

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

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

다음은 샘플링 추적 범위를 위한 Probabilistic Sampling Processor에 대한 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]
# ...
Copy to Clipboard Toggle word wrap
1
추적 파이프라인의 경우 무작위성 소스는 범위 추적 ID의 해시된 값입니다.
2
필수 항목입니다. 범위를 샘플링할 32비트 부동 소수점 백분율 값을 허용합니다.
3
선택 사항: 샘플링 논리 모드에 대해 지원되는 문자열 값(기본 hash_seed,proportional 또는 equalizing )을 허용합니다. hash_seed 모드는 Fowler-Noll-Vo (FNV) 해시 함수를 추적 ID에 적용하고 샘플링 백분율 값에 대해 해시된 값을 측정합니다. 추적 ID 이외의 원격 분석 단위와 함께 hash_seed 모드를 사용할 수도 있습니다. 비례 모드는 총 범위 수량의 엄격한 확률 기반 비율을 샘플링하고 OpenTelemetry 및 World Wide Web 컨소시엄 사양을 기반으로 합니다. 동등한 모드는 전체 파이프라인에서 샘플링 확률을 최소값으로 낮추거나 클라이언트 SDK에 혼합 샘플링 구성이 있는 수집기 배포에 균일한 샘플링 가능성을 적용하는 데 유용합니다.
4
선택 사항: 해시 알고리즘을 계산하는 데 사용되는 32비트 부호 없는 정수를 허용합니다. 이 필드가 구성되지 않은 경우 기본 seed 값은 0 입니다. 수집기 인스턴스의 여러 계층을 사용하는 경우 동일한 계층의 모든 수집기를 동일한 시드 값으로 구성해야 합니다.
5
선택 사항: 샘플링 임계값을 인코딩하는 데 사용되는 16진수 수를 결정합니다. 정수 값을 허용합니다. 지원되는 값은 1-14 입니다. 기본값 4 는 16개 이상의 유효 비트를 포함하는 경우 임계값이 반올림됩니다. 이는 56비트를 사용하는 비례 모드의 경우입니다. 비례 모드를 선택하는 경우 이전 샘플러가 적용한 정확성을 유지하기 위해 더 큰 값을 사용합니다.
6
선택 사항: 샘플링 오류와 함께 범위를 거부합니다. 부울 값을 허용합니다. 기본값은 true입니다.

다음은 샘플링 로그 레코드에 대한 Probabilistic Sampling Processor에 대한 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 ]
# ...
Copy to Clipboard Toggle word wrap
1
필수 항목입니다. 범위를 샘플링할 32비트 부동 소수점 백분율 값을 허용합니다.
2
선택 사항: 샘플링 논리 모드에 대해 지원되는 문자열 값(기본 hash_seed,동일 또는 비례 )을 허용합니다. hash_seed 모드는 Fowler-Noll-Vo (FNV) 해시 함수를 추적 ID 또는 지정된 로그 레코드 속성에 적용한 다음 샘플링 백분율 값에 대해 해시된 값을 측정합니다. 또한 hash_seed 모드를 추적 ID 이외의 다른 원격 분석 단위와 함께 사용할 수도 있습니다. 예를 들어 Pod의 백분율에서 로그 레코드를 수집하는 데 service.instance.id 리소스 속성을 사용합니다. 동등한 모드는 전체 파이프라인에서 샘플링 확률을 최소값으로 낮추거나 클라이언트 SDK에 혼합 샘플링 구성이 있는 수집기 배포에 균일한 샘플링 가능성을 적용하는 데 유용합니다. 비례 모드는 총 범위 수량의 엄격한 확률 기반 비율을 샘플링하고 OpenTelemetry 및 World Wide Web 컨소시엄 사양을 기반으로 합니다.
3
선택 사항: 해시 알고리즘을 계산하는 데 사용되는 32비트 부호 없는 정수를 허용합니다. 이 필드가 구성되지 않은 경우 기본 seed 값은 0 입니다. 수집기 인스턴스의 여러 계층을 사용하는 경우 동일한 계층의 모든 수집기를 동일한 시드 값으로 구성해야 합니다.
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

© 2025 Red Hat