4장. 계측 구성
OpenTelemetry 계측 삽입은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
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. 계측 옵션
계측 옵션은 OpenTelemetryCollector
사용자 지정 리소스에 지정됩니다.
샘플 OpenTelemetryCollector
사용자 정의 리소스 파일
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"
매개변수 | 설명 | 값 |
---|---|---|
env | 모든 계측을 정의하는 공통 환경 변수입니다. | |
exporter | 내보내기 구성. | |
propagators | 전파자는 프로세스 간 컨텍스트 전파 구성을 정의합니다. |
|
resource | 리소스 속성 구성. | |
sampler | 샘플링 구성. | |
apacheHttpd | Apache HTTP Server 조정 구성. | |
dotnet | .NET 계측에 대한 구성입니다. | |
go | Go 계측을 위한 구성입니다. | |
java | Java 계측을 위한 구성입니다. | |
nodejs | Node.js 계측 구성. | |
python | Python 계측을 위한 구성입니다. |
4.1.2. Service Mesh에서 계측 CR 사용
Red Hat OpenShift Service Mesh와 함께 조정 사용자 정의 리소스(CR)를 사용하는 경우 b3multi
전파기를 사용해야 합니다.
4.1.2.1. Apache HTTP Server 자동 복구 구성
이름 | 설명 | Default |
---|---|---|
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.2.2. .NET 자동 복원 구성
이름 | 설명 |
---|---|
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.2.3. Go 자동 복원 구성
이름 | 설명 |
---|---|
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.2.4. Java 자동 복원 구성
이름 | 설명 |
---|---|
env | Java와 관련된 환경 변수. |
image | Java SDK 및 자동 복구가 포함된 컨테이너 이미지입니다. |
resourceRequirements | 컴퓨팅 리소스 요구 사항입니다. |
삽입을 활성화하는 PodSpec
주석
instrumentation.opentelemetry.io/inject-java: "true"
4.1.2.5. Node.js 자동 복원 구성
이름 | 설명 |
---|---|
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.2.6. Python 자동 복원 구성
이름 | 설명 |
---|---|
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.2.7. OpenTelemetry SDK 변수 구성
Pod의 OpenTelemetry SDK 변수는 다음 주석을 사용하여 구성할 수 있습니다.
instrumentation.opentelemetry.io/inject-sdk: "true"
모든 주석은 다음 값을 허용합니다.
true
-
네임스페이스에서
Instrumentation
리소스를 삽입합니다. false
- 장치를 삽입하지 않습니다.
instrumentation-name
- 현재 네임스페이스에서 삽입할 계측 리소스의 이름입니다.
other-namespace/instrumentation-name
- 다른 네임스페이스에서 삽입할 계측 리소스의 이름입니다.
4.1.2.8. 멀티컨테이너 Pod
조정은 Pod 사양에 따라 기본적으로 사용 가능한 첫 번째 컨테이너에서 실행됩니다. 경우에 따라 삽입을 위해 대상 컨테이너를 지정할 수도 있습니다.
Pod 주석
instrumentation.opentelemetry.io/container-names: "<container_1>,<container_2>"
Go 자동 복원은 다중 컨테이너 자동 복구 삽입을 지원하지 않습니다.