4장. 계측 구성


Red Hat build of OpenTelemetry Operator는 계측 구성을 정의하는 CRD(사용자 정의 리소스 정의) 파일을 사용합니다.

4.1. OpenTelemetry 조정 구성 옵션

Red Hat build of OpenTelemetry는 OpenTelemetry 자동 복구 라이브러리를 워크로드에 삽입하고 구성할 수 있습니다. 현재 이 프로젝트는 Go, Java, Node.js, Python, .NET 및 Apache HTTP Server(httpd)의 계측 라이브러리 삽입을 지원합니다.

OpenTelemetry의 자동 복원은 프레임워크가 수동 코드 변경없이 애플리케이션을 자동으로 수행하는 기능을 나타냅니다. 이를 통해 개발자와 관리자는 기존 코드베이스에 대한 최소한의 노력과 변경 사항을 통해 애플리케이션을 관찰할 수 있습니다.

중요

Red Hat build of OpenTelemetry Operator는 계측 라이브러리의 삽입 메커니즘만 지원하지만 계측 라이브러리 또는 업스트림 이미지는 지원하지 않습니다. 고객은 자체 계측 이미지를 빌드하거나 커뮤니티 이미지를 사용할 수 있습니다.

4.1.1. 계측 옵션

계측 옵션은 Instrumentation CR(사용자 정의 리소스)에 지정됩니다.

샘플 Instrumentation CR

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: java-instrumentation
spec:
  env:
    - name: OTEL_EXPORTER_OTLP_TIMEOUT
      value: "20"
  exporter:
    endpoint: http://production-collector.observability.svc.cluster.local:4317
  propagators:
    - w3c
  sampler:
    type: parentbased_traceidratio
    argument: "0.25"
  java:
    env:
    - name: OTEL_JAVAAGENT_DEBUG
      value: "true"

표 4.1. Operator에서 Instrumentation을 정의하는 데 사용하는 매개변수
매개변수설명

env

모든 계측을 정의하는 공통 환경 변수입니다.

 

내보내기

내보내기 구성.

 

propagators

전파자는 프로세스 간 컨텍스트 전파 구성을 정의합니다.

tracecontext, baggage, b3, b3multi, jaeger, ottrace, none

resource

리소스 속성 구성.

 

샘플러

샘플링 구성.

 

apacheHttpd

Apache HTTP Server 조정 구성.

 

dotnet

.NET 계측에 대한 구성입니다.

 

Go

Go 계측을 위한 구성입니다.

 

java

Java 계측을 위한 구성입니다.

 

nodejs

Node.js 계측 구성.

 

python

Python 계측을 위한 구성입니다.

 
표 4.2. 자동 복원을 위한 기본 프로토콜
자동 복원기본 프로토콜

Java 1.x

otlp/grpc

Java 2.x

otlp/http

Python

otlp/http

.NET

otlp/http

Go

otlp/http

Apache HTTP Server

otlp/grpc

4.1.2. OpenTelemetry SDK 변수 구성

OpenTelemetry 수집기 사용자 정의 리소스에서 instrumentation.opentelemetry.io/inject-sdk 주석을 사용하여 OpenTelemetry Operator의 Red Hat 빌드를 지시하여 Instrumentation CR에 따라 다음 OpenTelemetry SDK 환경 변수 중 일부를 Pod에 삽입할 수 있습니다.

  • OTEL_SERVICE_NAME
  • OTEL_TRACES_SAMPLER
  • OTEL_TRACES_SAMPLER_ARG
  • OTEL_PROPAGATORS
  • OTEL_RESOURCE_ATTRIBUTES
  • OTEL_EXPORTER_OTLP_ENDPOINT
  • OTEL_EXPORTER_OTLP_CERTIFICATE
  • OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE
  • OTEL_EXPORTER_OTLP_CLIENT_KEY
표 4.3. instrumentation.opentelemetry.io/inject-sdk 주석의 값
현재의설명

"true"

현재 네임스페이스의 기본 이름으로 Instrumentation 리소스를 삽입합니다.

"false"

Instrumentation 리소스를 삽입하지 않습니다.

"<instrumentation_name>"

현재 네임스페이스에서 삽입할 Instrumentation 리소스의 이름을 지정합니다.

"<namespace>/<instrumentation_name>"

다른 네임스페이스에서 삽입할 Instrumentation 리소스의 이름을 지정합니다.

4.1.3. 내보내기 구성

Instrumentation 사용자 정의 리소스는 신호당 하나 이상의 내보내기를 설정할 수 있지만 자동 복원은 OTLP 내보내기만 구성합니다. 따라서 수집기에서 OTLP 수신자를 가리키도록 끝점을 구성해야 합니다.

구성 맵을 사용한 내보내기 TLS CA 구성 샘플

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
# ...
spec
# ...
  exporter:
    endpoint: https://production-collector.observability.svc.cluster.local:4317  1
    tls:
      configMapName: ca-bundle  2
      ca_file: service-ca.crt 3
# ...

1
HTTPS 스키마 및 TLS를 사용하여 OTLP 끝점을 지정합니다.
2
구성 맵의 이름을 지정합니다. 구성 맵은 자동 복원을 삽입하는 Pod의 네임스페이스에 이미 있어야 합니다.
3
인증서가 워크로드 파일 시스템에 이미 있는 경우 구성 맵의 CA 인증서 또는 인증서의 절대 경로를 가리킵니다.

보안을 사용한 내보내기 mTLS 구성 샘플

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
# ...
spec
# ...
  exporter:
    endpoint: https://production-collector.observability.svc.cluster.local:4317  1
    tls:
      secretName: serving-certs 2
      ca_file: service-ca.crt 3
      cert_file: tls.crt 4
      key_file: tls.key 5
# ...

1
HTTPS 스키마 및 TLS를 사용하여 OTLP 끝점을 지정합니다.
2
ca_file,cert_file, key_file 값의 Secret 이름을 지정합니다. Secret은 자동 복원을 삽입하는 Pod의 네임스페이스에 이미 있어야 합니다.
3
인증서가 워크로드 파일 시스템에 이미 있는 경우 Secret의 CA 인증서 또는 인증서의 절대 경로를 가리킵니다.
4
인증서가 워크로드 파일 시스템에 이미 존재하는 경우 Secret의 클라이언트 인증서 또는 인증서의 절대 경로를 가리킵니다.
5
키가 워크로드 파일 시스템에 이미 존재하는 경우 Secret의 클라이언트 키 또는 키에 대한 절대 경로를 가리킵니다.
참고

구성 맵 또는 시크릿에 CA 인증서를 제공할 수 있습니다. 둘 다 제공하는 경우 구성 맵이 시크릿보다 우선 순위가 높습니다.

구성 맵 및 Instrumentation CR을 사용하여 CA 번들 삽입 구성의 예

apiVersion: v1
kind: ConfigMap
metadata:
  name: otelcol-cabundle
  namespace: tutorial-application
  annotations:
    service.beta.openshift.io/inject-cabundle: "true"
# ...
---
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: my-instrumentation
spec:
  exporter:
    endpoint: https://simplest-collector.tracing-system.svc.cluster.local:4317
    tls:
      configMapName: otelcol-cabundle
      ca: service-ca.crt
# ...

4.1.4. Apache HTTP Server 자동 복구 구성

중요

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

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

표 4.4. .spec.apacheHttpd 필드에 대한 매개변수
이름설명기본

attrs

Apache HTTP Server와 관련된 속성입니다.

 

configPath

Apache HTTP Server 구성의 위치입니다.

/usr/local/apache2/conf

env

Apache HTTP Server와 관련된 환경 변수.

 

image

Apache SDK 및 자동 복구가 포함된 컨테이너 이미지입니다.

 

resourceRequirements

컴퓨팅 리소스 요구 사항입니다.

 

version

Apache HTTP Server 버전.

2.4

삽입을 활성화하는 PodSpec 주석

instrumentation.opentelemetry.io/inject-apache-httpd: "true"

4.1.5. .NET 자동 복원 구성

중요

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

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

중요

기본적으로 이 기능은 지원되지 않는 업스트림 계측 라이브러리를 삽입합니다.

이름설명

env

.NET 고유의 환경 변수입니다.

image

.NET SDK 및 자동 복구가 포함된 컨테이너 이미지입니다.

resourceRequirements

컴퓨팅 리소스 요구 사항입니다.

.NET 자동 복원의 경우 내보내기기의 끝점이 4317 로 설정된 경우 필요한 OTEL_EXPORTER_OTLP_ENDPOINT 환경 변수를 설정해야 합니다. .NET autoinstrumentation에서는 기본적으로 http/proto 를 사용하고 Telemetry 데이터를 4318 포트로 설정해야 합니다.

삽입을 활성화하는 PodSpec 주석

instrumentation.opentelemetry.io/inject-dotnet: "true"

4.1.6. Go 자동 복원 구성

중요

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

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

중요

기본적으로 이 기능은 지원되지 않는 업스트림 계측 라이브러리를 삽입합니다.

이름설명

env

Go 관련 환경 변수.

image

Go SDK 및 자동 복구가 포함된 컨테이너 이미지입니다.

resourceRequirements

컴퓨팅 리소스 요구 사항입니다.

삽입을 활성화하는 PodSpec 주석

instrumentation.opentelemetry.io/inject-go: "true"

OpenShift 클러스터의 Go 자동 복원에 필요한 추가 권한

apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
metadata:
  name: otel-go-instrumentation-scc
allowHostDirVolumePlugin: true
allowPrivilegeEscalation: true
allowPrivilegedContainer: true
allowedCapabilities:
- "SYS_PTRACE"
fsGroup:
  type: RunAsAny
runAsUser:
  type: RunAsAny
seLinuxContext:
  type: RunAsAny
seccompProfiles:
- '*'
supplementalGroups:
  type: RunAsAny

작은 정보

OpenShift 클러스터에서 Go 자동 복구에 대한 권한을 적용하는 CLI 명령은 다음과 같습니다.

$ oc adm policy add-scc-to-user otel-go-instrumentation-scc -z <service_account>

4.1.7. Java 자동 복원 구성

중요

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

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

중요

기본적으로 이 기능은 지원되지 않는 업스트림 계측 라이브러리를 삽입합니다.

이름설명

env

Java와 관련된 환경 변수.

image

Java SDK 및 자동 복구가 포함된 컨테이너 이미지입니다.

resourceRequirements

컴퓨팅 리소스 요구 사항입니다.

삽입을 활성화하는 PodSpec 주석

instrumentation.opentelemetry.io/inject-java: "true"

4.1.8. Node.js 자동 복원 구성

중요

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

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

중요

기본적으로 이 기능은 지원되지 않는 업스트림 계측 라이브러리를 삽입합니다.

이름설명

env

Node.js와 관련된 환경 변수.

image

Node.js SDK 및 자동 복원이 포함된 컨테이너 이미지입니다.

resourceRequirements

컴퓨팅 리소스 요구 사항입니다.

삽입을 활성화하는 PodSpec 주석

instrumentation.opentelemetry.io/inject-nodejs: "true"
instrumentation.opentelemetry.io/otel-go-auto-target-exe: "/path/to/container/executable"

instrumentation.opentelemetry.io/otel-go-auto-target-exe 주석은 필요한 OTEL_GO_AUTO_TARGET_EXE 환경 변수의 값을 설정합니다.

4.1.9. Python 자동 복원 구성

중요

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

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

중요

기본적으로 이 기능은 지원되지 않는 업스트림 계측 라이브러리를 삽입합니다.

이름설명

env

Python과 관련된 환경 변수.

image

Python SDK 및 자동 복구가 포함된 컨테이너 이미지입니다.

resourceRequirements

컴퓨팅 리소스 요구 사항입니다.

Python 자동 복원의 경우 내보내기 사용자의 끝점이 4317 로 설정된 경우 OTEL_EXPORTER_OTLP_ENDPOINT 환경 변수를 설정해야 합니다. Python 자동 복원은 기본적으로 http/proto 를 사용하며 Telemetry 데이터를 4318 포트로 설정해야 합니다.

삽입을 활성화하는 PodSpec 주석

instrumentation.opentelemetry.io/inject-python: "true"

4.1.10. 멀티컨테이너 Pod

조정은 Pod 사양에 따라 기본적으로 사용 가능한 첫 번째 컨테이너에서 실행됩니다. 경우에 따라 삽입을 위해 대상 컨테이너를 지정할 수도 있습니다.

Pod 주석

instrumentation.opentelemetry.io/container-names: "<container_1>,<container_2>"

참고

Go 자동 복원은 다중 컨테이너 자동 복구 삽입을 지원하지 않습니다.

4.1.11. 여러 개의 계측이 있는 멀티컨테이너 Pod

멀티컨테이너 Pod의 하나 이상의 컨테이너에 애플리케이션 언어를 삽입하려면 다음 주석이 필요합니다.

instrumentation.opentelemetry.io/<application_language>-container-names: "<container_1>,<container_2>" 1
1
컨테이너당 하나의 언어에 대한 계측을 삽입할 수 있습니다. 지원되는 < application_ language&gt; 값 목록은 다음 표를 참조하십시오.
표 4.5. < application_ language&gt;에 지원되는 값
언어< application_ Cryostat>의 값

ApacheHTTPD

apache

DotNet

dotnet

Java

java

NGINX

inject-nginx

NodeJS

nodejs

Python

python

SDK

sdk

4.1.12. Service Mesh에서 계측 CR 사용

Red Hat OpenShift Service Mesh와 함께 조정 사용자 정의 리소스(CR)를 사용하는 경우 b3multi 전파기를 사용해야 합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.