4장. 수집기 구성


4.1. 수집기 구성

Red Hat build of OpenTelemetry Operator는 OpenTelemetry 리소스의 Red Hat 빌드를 생성하고 배포할 때 사용할 아키텍처 및 구성 설정을 정의하는 CRD(사용자 정의 리소스 정의) 파일을 사용합니다. 기본 구성을 설치하거나 파일을 수정할 수 있습니다.

4.1.1. 배포 모드

OpenTelemetryCollector 사용자 정의 리소스를 사용하면 OpenTelemetry Collector에 대해 다음 배포 모드 중 하나를 지정할 수 있습니다.

Deployment
기본값.
StatefulSet
예를 들어 수집기 파일 저장 확장 프로그램이나 테일 샘플링 프로세서를 사용할 때와 같이 상태 저장 워크로드를 실행해야 하는 경우 StatefulSet 배포 모드를 사용하세요.
DaemonSet
예를 들어, 컨테이너 로그를 읽기 위해 Collector의 Filelog Receiver를 사용하여 모든 노드에서 원격 측정 데이터를 스크래핑해야 하는 경우 DaemonSet 배포 모드를 사용하세요.
사이드카

컨테이너 내부의 로그 파일에 액세스해야 하는 경우 Collector를 사이드카로 주입하고 Collector의 Filelog Receiver와 emptyDir 과 같은 공유 볼륨을 사용합니다.

로컬호스트를 통해 원격 측정 데이터를 전송하도록 애플리케이션을 구성해야 하는 경우, Collector를 사이드카로 주입하고 암호화되고 인증된 연결을 통해 원격 측정 데이터를 외부 서비스로 전달하도록 Collector를 설정합니다. 사이드카로 주입되면 컬렉터는 애플리케이션과 동일한 포드에서 실행됩니다.

참고

사이드카 배포 모드를 선택하는 경우 OpenTelemetryCollector 사용자 지정 리소스 CR에서 spec.mode: sidecar 필드를 설정하는 것 외에도 sidecar.opentelemetry.io/inject 주석을 Pod 주석이나 네임스페이스 주석으로 설정해야 합니다. 이 주석을 포드와 네임스페이스 모두에 설정하는 경우, 포드 주석이 false 또는 OpenTelemetryCollector CR 이름으로 설정된 경우 해당 주석이 우선합니다.

포드 주석으로서 sidecar.opentelemetry.io/inject 주석은 여러 값을 지원합니다.

apiVersion: v1
kind: Pod
metadata:
  ...
  annotations:
    sidecar.opentelemetry.io/inject: "<supported_value>" 
1

...
1
지원되는 값:
false
수집기를 주입하지 않습니다. 주석이 없으면 이것이 기본값입니다.
true
동일한 네임스페이스에 있는 OpenTelemetryCollector CR의 구성을 Collector에 주입합니다.
<collector_name>
동일한 네임스페이스에 있는 <collector_name> OpenTelemetryCollector CR의 구성을 Collector에 주입합니다.
<namespace>/<collector_name>
<네임스페이스> 네임스페이스에 <collector_name> OpenTelemetryCollector CR 구성을 Collector에 주입합니다.

4.1.2. OpenTelemetry 수집기 구성 옵션

OpenTelemetry Collector는 Telemetry 데이터에 액세스하는 5가지 유형의 구성 요소로 구성됩니다.

  • 수신자
  • 프로세서
  • 내보내기
  • 커넥터
  • 확장

사용자 정의 리소스 YAML 파일에서 구성 요소의 여러 인스턴스를 정의할 수 있습니다. 구성하는 경우 YAML 파일의 spec.config.service 섹션에 정의된 파이프라인을 통해 이러한 구성 요소를 활성화해야 합니다. 필요한 구성 요소만 활성화하는 것이 좋습니다.

OpenTelemetry Collector 사용자 정의 리소스 파일의 예

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: cluster-collector
  namespace: tracing-system
spec:
  mode: deployment
  observability:
    metrics:
      enableMetrics: true
  config:
    receivers:
      otlp:
        protocols:
          grpc: {}
          http: {}
    processors: {}
    exporters:
      otlp:
        endpoint: otel-collector-headless.tracing-system.svc:4317
        tls:
          ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt"
      prometheus:
        endpoint: 0.0.0.0:8889
        resource_to_telemetry_conversion:
          enabled: true # by default resource attributes are dropped
    service: 
1

      pipelines:
        traces:
          receivers: [otlp]
          processors: []
          exporters: [otlp]
        metrics:
          receivers: [otlp]
          processors: []
          exporters: [prometheus]

1
구성 요소가 구성되었지만 service 섹션에 정의되지 않은 경우 구성 요소가 활성화되지 않습니다.
Expand
표 4.1. Operator에서 OpenTelemetry Collector를 정의하는 데 사용하는 매개변수
매개변수설명Default
receivers:

수신자는 데이터가 수집기로 들어오는 방법입니다. 기본적으로 수신자는 설정되어 있지 않습니다. 구성이 유효한 것으로 간주되려면 하나 이상의 사용 가능한 수신자가 있어야 합니다. 파이프라인에 추가되면 수신자가 활성화됩니다.

otlp,jaeger,prometheus,zipkin,kafka,opencensus

없음

processors:

프로세서는 내보낸 데이터를 통해 실행됩니다. 기본적으로 프로세서는 사용할 수 없습니다.

batch,memory_limiter,resourcedetection,attributes,span,k8sattributes,filter,routing

없음

exporters:

내보내기는 하나 이상의 백엔드 또는 대상에 데이터를 보냅니다. 기본적으로 내보내기는 구성되지 않습니다. 구성이 유효한 것으로 간주되려면 하나 이상의 활성화된 내보내기가 있어야 합니다. 파이프라인에 내보내기를 추가하여 사용할 수 있습니다. 내보내기는 기본 설정과 함께 사용할 수 있지만 대상 및 보안 설정을 지정하려면 많은 구성이 필요합니다.

otlp,otlphttp,debug,prometheus,kafka

없음

connectors:

Connectors는 데이터를 end-of-pipeline 내보내기 도구로 사용하고 데이터를 초기-op-pipeline 수신자로 내보내 파이프라인 쌍을 결합합니다. 커넥터를 사용하여 소비된 데이터를 요약, 복제 또는 라우팅할 수 있습니다.

spanmetrics

없음

extensions:

Telemetry 데이터를 처리하지 않는 작업의 선택적 구성 요소입니다.

bearertokenauth , oauth2client , pprof , health_check , memory_ballast , zpages

없음

service:
  pipelines:

구성 요소는 services.pipeline 의 파이프라인에 추가하여 활성화됩니다.

  
service:
  pipelines:
    traces:
      receivers:

service.pipelines.traces 에서 추적을 위해 수신자를 활성화합니다.

 

없음

service:
  pipelines:
    traces:
      processors:

service.pipelines.traces 에서 추적을 위해 프로세서를 활성화합니다.

 

없음

service:
  pipelines:
    traces:
      exporters:

service.pipelines.traces 에서 추적을 위해 내보내기를 활성화합니다.

 

없음

service:
  pipelines:
    metrics:
      receivers:

service.pipelines.metrics 에 추가하여 메트릭의 수신자를 활성화합니다.

 

없음

service:
  pipelines:
    metrics:
      processors:

service.pipelines.metrics 에 추가하여 metircs의 프로세서를 활성화합니다.

 

없음

service:
  pipelines:
    metrics:
      exporters:

service.pipelines.metrics 에서 메트릭에 내보내기를 활성화합니다.

 

없음

4.1.3. 프로파일 신호

Profile 신호는 코드 실행과 리소스 소비를 관찰하기 위한 새로운 원격 측정 데이터 형식입니다.

중요

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

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

Profile 신호를 사용하면 비효율적인 코드를 특정 함수까지 정확하게 찾아낼 수 있습니다. 이러한 프로파일링을 사용하면 특정 코드 줄까지 성능 병목 현상과 리소스 비효율성을 정확하게 파악할 수 있습니다. 이러한 고충실도 프로파일 데이터를 추적, 측정항목 및 로그와 연관시켜 프로덕션 환경에서 포괄적인 성능 분석과 타깃형 코드 최적화가 가능합니다.

프로파일링은 애플리케이션이나 운영 체제를 타겟으로 할 수 있습니다.

  • 프로파일링을 사용하여 애플리케이션을 관찰하면 개발자가 코드 성능을 검증하고, 회귀를 방지하고, 메모리 및 CPU 사용과 같은 리소스 소비를 모니터링하여 비효율적인 코드를 식별하고 개선하는 데 도움이 됩니다.
  • 프로파일링을 사용하여 운영 체제를 관찰하면 인프라, 시스템 호출, 커널 작업, I/O 대기 시간에 대한 통찰력을 얻을 수 있으며, 이를 통해 효율성과 비용 절감을 위해 인프라를 최적화하는 데 도움이 됩니다.

Profile 신호가 활성화된 OpenTelemetry Collector 사용자 정의 리소스

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
name: otel-profiles-collector
  namespace: otel-profile
spec:
 args:
   feature-gates: service.profilesSupport 
1

  config:
    receivers:
      otlp: 
2

        protocols:
          grpc:
           endpoint: '0.0.0.0:4317'
          http:
           endpoint: '0.0.0.0:4318'
    exporters:
       otlp/pyroscope:
           endpoint: "pyroscope.pyroscope-monitoring.svc.cluster.local:4317" 
3

    service:
      pipelines: 
4

         profiles:
           receivers: [otlp]
           exporters: [otlp/pyroscope]
# ...

1
여기에 표시된 대로 feature-gates 필드를 설정하여 프로필을 활성화합니다.
2
OTLP 수신기를 구성하여 OpenTelemetry Collector가 OTLP를 통해 프로필 데이터를 수신하도록 설정합니다.
3
저장소 등 프로필을 내보낼 위치를 구성합니다.
4
Grafana Pyroscope와 같은 OTLP 호환 프로파일링 백엔드로 수신된 프로파일 데이터를 전달하기 위한 구성을 포함하여 프로파일링 파이프라인을 정의합니다.

4.1.4. 필요한 RBAC 리소스 자동 생성

일부 Collector 구성 요소에는 RBAC 리소스를 구성해야 합니다.

프로세스

  • OpenTelemetry Operator의 Red Hat 빌드가 자동으로 생성할 수 있도록 opentelemetry-operator-controller-manage 서비스 계정에 다음 권한을 추가합니다.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: generate-processors-rbac
    rules:
    - apiGroups:
      - rbac.authorization.k8s.io
      resources:
      - clusterrolebindings
      - clusterroles
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: generate-processors-rbac
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: generate-processors-rbac
    subjects:
    - kind: ServiceAccount
      name: opentelemetry-operator-controller-manager
      namespace: openshift-opentelemetry-operator

4.1.5. Target Allocator

대상 할당자는 OpenTelemetry Collector 인스턴스의 배포된 전체에서 스크래핑 대상을 분할하는 OpenTelemetry Operator의 선택적 구성 요소입니다. Target Allocator는 Prometheus PodMonitorServiceMonitor 사용자 정의 리소스(CR)와 통합됩니다. 대상 할당자가 활성화되면 OpenTelemetry Operator는 대상 할당자 서비스에 연결되는 활성화된 prometheus 수신기에 http_sd_config 필드를 추가합니다.

중요

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

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

활성화된 대상 할당기를 사용한 OpenTelemetryCollector CR 예제

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: otel
  namespace: observability
spec:
  mode: statefulset 
1

  targetAllocator:
    enabled: true 
2

    serviceAccount: 
3

    prometheusCR:
      enabled: true 
4

      scrapeInterval: 10s
      serviceMonitorSelector: 
5

        name: app1
      podMonitorSelector: 
6

        name: app2
  config:
    receivers:
      prometheus: 
7

        config:
          scrape_configs: []
    processors:
    exporters:
      debug: {}
    service:
      pipelines:
        metrics:
          receivers: [prometheus]
          processors: []
          exporters: [debug]
# ...

1
대상 할당자가 활성화된 경우 배포 모드를 statefulset 으로 설정해야 합니다.
2
대상 할당자를 활성화합니다. 기본값은 false입니다.
3
Target Allocator 배포의 서비스 계정 이름입니다. 서비스 계정에는 클러스터에서 ServiceMonitor , PodMonitor 사용자 정의 리소스 및 기타 개체를 가져와서 스크래핑된 메트릭에 레이블을 올바르게 설정하기 위한 RBAC가 있어야 합니다. 기본 서비스 이름은 <collector_name>-targetallocator 입니다.
4
Prometheus PodMonitorServiceMonitor 사용자 정의 리소스와의 통합을 활성화합니다.
5
Prometheus ServiceMonitor 사용자 정의 리소스에 대한 레이블 선택기입니다. 비어 두면 모든 서비스 모니터가 활성화됩니다.
6
Prometheus PodMonitor 사용자 정의 리소스에 대한 라벨 선택기입니다. 비어 두면 모든 포드 모니터가 활성화됩니다.
7
최소한의 빈 scrape_config: [] 구성 옵션을 갖춘 Prometheus 수신기입니다.

Target Allocator 배포는 Kubernetes API를 사용하여 클러스터에서 관련 객체를 가져오므로 사용자 지정 RBAC 구성이 필요합니다.

Target Allocator 서비스 계정에 대한 RBAC 구성

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: otel-targetallocator
rules:
  - apiGroups: [""]
    resources:
      - services
      - pods
      - namespaces
    verbs: ["get", "list", "watch"]
  - apiGroups: ["monitoring.coreos.com"]
    resources:
      - servicemonitors
      - podmonitors
      - scrapeconfigs
      - probes
    verbs: ["get", "list", "watch"]
  - apiGroups: ["discovery.k8s.io"]
    resources:
      - endpointslices
    verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: otel-targetallocator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: otel-targetallocator
subjects:
  - kind: ServiceAccount
    name: otel-targetallocator 
1

    namespace: observability 
2

# ...

1
Target Allocator 서비스 계정의 이름입니다.
2
Target Allocator 서비스 계정의 네임스페이스입니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동