5.2. OpenTelemetry 계측 구성 옵션
OpenTelemetry의 Red Hat 빌드는 OpenTelemetry 자동 계측 라이브러리를 워크로드에 주입하고 구성합니다. 현재 OpenTelemetry의 Red Hat 빌드는 Go, Java, Node.js, Python, .NET 및 Apache HTTP Server( httpd )에 대한 계측 라이브러리 삽입을 지원합니다.
OpenTelemetry Operator의 Red Hat 빌드는 계측 라이브러리의 주입 메커니즘만 지원하고 계측 라이브러리나 업스트림 이미지는 지원하지 않습니다. 고객은 자체 계측 이미지를 구축하거나 커뮤니티 이미지를 사용할 수 있습니다.
5.2.1. 계측 옵션 링크 복사링크가 클립보드에 복사되었습니다!
계측 옵션은 계측 사용자 정의 리소스(CR)에 지정됩니다.
샘플 계측 CR
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
name: instrumentation
spec:
env:
- name: OTEL_EXPORTER_OTLP_TIMEOUT
value: "20"
exporter:
endpoint: http://production-collector.observability.svc.cluster.local:4317
propagators:
- tracecontext
- baggage
sampler:
type: parentbased_traceidratio
argument: "1"
python:
env:
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: http://production-collector.observability.svc.cluster.local:4318
dotnet:
env:
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: http://production-collector.observability.svc.cluster.local:4318
go:
env:
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: http://production-collector.observability.svc.cluster.local:4318
- 1
- Python 자동 계측은 기본적으로 HTTP(HTTP/proto 또는 HTTP/protobuf)를 통한 프로토콜 버퍼를 사용합니다.
- 2
- 엔드포인트가
:4317로 설정된 경우 필수입니다. - 3
- .NET 자동 계측은 기본적으로 HTTP(HTTP/proto 또는 HTTP/protobuf)를 통한 프로토콜 버퍼를 사용합니다.
- 4
- 엔드포인트가
:4317로 설정된 경우 필수입니다. - 5
- Go 자동 계측은 기본적으로 HTTP(HTTP/proto 또는 HTTP/protobuf)를 통한 프로토콜 버퍼를 사용합니다.
- 6
- 엔드포인트가
:4317로 설정된 경우 필수입니다.프로토콜 버퍼에 대한 자세한 내용은 개요 (프로토콜 버퍼 문서)를 참조하세요.
| 매개변수 | 설명 | 값 |
|---|---|---|
|
| 모든 계측 유형에 대한 공통 환경 변수 정의. | |
|
| 내보내기 구성. | |
|
| Propagators는 프로세스 간 컨텍스트 전파 구성을 정의합니다. |
|
|
| 리소스 속성 구성. | |
|
| 샘플링 구성. | |
|
| Apache HTTP 서버 계측을 위한 구성입니다. | |
|
| .NET 계측을 위한 구성입니다. | |
| Go | Go 계측을 위한 구성. | |
|
| Java 계측을 위한 구성. | |
|
| Node.js 계측을 위한 구성. | |
|
| Python 계측을 위한 구성. | 프로그래밍 언어에 따라 환경 변수가 원격 측정 구성에 작동하지 않을 수 있습니다. 환경 변수 구성을 지원하지 않는 SDK의 경우, 비슷한 구성을 코드에 직접 추가해야 합니다. 자세한 내용은 Environment Variable Specification (OpenTelemetry문서)을 참조하세요. |
| 자동 계측 | 기본 프로토콜 |
|---|---|
| Java 1.x |
|
| Java 2.x |
|
| Python |
|
| .NET |
|
| Go |
|
| Apache HTTP Server |
|
5.2.2. OpenTelemetry SDK 변수 구성 링크 복사링크가 클립보드에 복사되었습니다!
OpenTelemetry Collector 사용자 지정 리소스에서 instrumentation.opentelemetry.io/inject-sdk 주석을 사용하면 OpenTelemetry Operator의 Red Hat 빌드가 Instrumentation CR에 따라 다음 OpenTelemetry SDK 환경 변수 중 일부를 사용자의 포드에 주입하도록 지시할 수 있습니다.
-
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
| 현재의 | 설명 |
|---|---|
|
|
현재 네임스페이스의 기본 이름으로 |
|
|
|
|
|
현재 네임스페이스에서 삽입할 |
|
|
다른 네임스페이스에서 주입할 |
5.2.3. 내보내기 구성 링크 복사링크가 클립보드에 복사되었습니다!
계측 사용자 정의 리소스는 신호당 하나 이상의 내보내기 기능을 설정하는 것을 지원하지만, 자동 계측은 OTLP 내보내기 기능만 구성합니다. 따라서 수집기의 OTLP 수신기를 가리키도록 엔드포인트를 구성해야 합니다.
구성 맵을 사용한 샘플 내보내기 TLS CA 구성
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
# ...
spec
# ...
exporter:
endpoint: https://production-collector.observability.svc.cluster.local:4317
tls:
configMapName: ca-bundle
ca_file: service-ca.crt
# ...
비밀을 사용한 샘플 내보내기 mTLS 구성
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
# ...
spec
# ...
exporter:
endpoint: https://production-collector.observability.svc.cluster.local:4317
tls:
secretName: serving-certs
ca_file: service-ca.crt
cert_file: tls.crt
key_file: tls.key
# ...
- 1
- HTTPS 체계와 TLS를 사용하여 OTLP 엔드포인트를 지정합니다.
- 2
ca_file,cert_file및key_file값에 대한 비밀 이름을 지정합니다. Secret은 자동 계측을 주입하는 Pod의 네임스페이스에 이미 존재해야 합니다.- 3
- Secret에 있는 CA 인증서를 가리키거나, 인증서가 이미 워크로드 파일 시스템에 있는 경우 인증서의 절대 경로를 가리킵니다.
- 4
- Secret에 있는 클라이언트 인증서를 가리키거나, 인증서가 이미 워크로드 파일 시스템에 있는 경우 인증서의 절대 경로를 가리킵니다.
- 5
- Secret에 있는 클라이언트 키를 가리키거나, 키가 이미 워크로드 파일 시스템에 있는 경우 키의 절대 경로를 가리킵니다.
CA 인증서는 구성 맵이나 비밀로 제공할 수 있습니다. 두 가지 모두에 제공하는 경우 구성 맵이 Secret보다 우선순위가 높습니다.
구성 맵과 계측 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
# ...
5.2.4. Apache HTTP 서버 자동 계측 구성 링크 복사링크가 클립보드에 복사되었습니다!
Apache HTTP 서버 자동 계측은 기술 미리 보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.
| 이름 | 설명 | 기본 |
|---|---|---|
|
| Apache HTTP 서버에 특정한 속성입니다. | |
|
| Apache HTTP 서버 구성의 위치. |
|
|
| Apache HTTP 서버에 특정한 환경 변수. | |
|
| Apache SDK와 자동 계측 기능을 갖춘 컨테이너 이미지입니다. | |
|
| 컴퓨팅 리소스 요구 사항 | |
|
| Apache HTTP 서버 버전. |
|
주입을 활성화하기 위한 PodSpec 주석
instrumentation.opentelemetry.io/inject-apache-httpd: "true"
5.2.5. .NET 자동 계측 구성 링크 복사링크가 클립보드에 복사되었습니다!
Python 자동 계측은 기술 미리 보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.
기본적으로 이 기능은 지원되지 않는 업스트림 계측 라이브러리를 주입합니다.
| 이름 | 설명 |
|---|---|
|
| .NET에 특정한 환경 변수. |
|
| .NET SDK와 자동 계측 기능을 갖춘 컨테이너 이미지입니다. |
|
| 컴퓨팅 리소스 요구 사항 |
.NET 자동 계측의 경우, 내보내기 프로그램의 엔드포인트가 4317 로 설정된 경우 필수 OTEL_EXPORTER_OTLP_ENDPOINT 환경 변수를 설정해야 합니다. .NET 자동 계측은 기본적으로 http/proto를 사용하고 원격 측정 데이터는 4318 포트로 설정해야 합니다.
주입을 활성화하기 위한 PodSpec 주석
instrumentation.opentelemetry.io/inject-dotnet: "true"
5.2.6. Go 자동 계측 구성 링크 복사링크가 클립보드에 복사되었습니다!
Python 자동 계측은 기술 미리 보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.
기본적으로 이 기능은 지원되지 않는 업스트림 계측 라이브러리를 주입합니다.
| 이름 | 설명 |
|---|---|
|
| Go에 특화된 환경 변수. |
|
| Go SDK와 자동 계측을 갖춘 컨테이너 이미지입니다. |
|
| 컴퓨팅 리소스 요구 사항 |
주입을 활성화하기 위한 PodSpec 주석
instrumentation.opentelemetry.io/inject-go: "true"
instrumentation.opentelemetry.io/otel-go-auto-target-exe: "/<path>/<to>/<container>/<executable>"
- 1
- 필수
OTEL_GO_AUTO_TARGET_EXE환경 변수의 값을 설정합니다.
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>
5.2.7. Java 자동 계측 구성 링크 복사링크가 클립보드에 복사되었습니다!
Python 자동 계측은 기술 미리 보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.
기본적으로 이 기능은 지원되지 않는 업스트림 계측 라이브러리를 주입합니다.
| 이름 | 설명 |
|---|---|
|
| Java에 특화된 환경 변수. |
|
| Java SDK와 자동 계측 기능을 갖춘 컨테이너 이미지입니다. |
|
| 컴퓨팅 리소스 요구 사항 |
주입을 활성화하기 위한 PodSpec 주석
instrumentation.opentelemetry.io/inject-java: "true"
5.2.8. Node.js 자동 계측 구성 링크 복사링크가 클립보드에 복사되었습니다!
Node.js 자동 계측은 기술 미리 보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.
기본적으로 이 기능은 지원되지 않는 업스트림 계측 라이브러리를 주입합니다.
| 이름 | 설명 |
|---|---|
|
| Node.js에 특정한 환경 변수. |
|
| Node.js SDK와 자동 계측 기능을 갖춘 컨테이너 이미지입니다. |
|
| 컴퓨팅 리소스 요구 사항 |
주입을 활성화하기 위한 PodSpec 주석
instrumentation.opentelemetry.io/inject-nodejs: "true"
5.2.9. Python 자동 계측 구성 링크 복사링크가 클립보드에 복사되었습니다!
Python 자동 계측은 기술 미리 보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat Technology Preview 기능의 지원 범위에 대한 자세한 내용은 다음 링크를 참조하세요.
기본적으로 이 기능은 지원되지 않는 업스트림 계측 라이브러리를 주입합니다.
| 이름 | 설명 |
|---|---|
|
| Python에 특화된 환경 변수. |
|
| Python SDK와 자동 계측 기능을 갖춘 컨테이너 이미지입니다. |
|
| 컴퓨팅 리소스 요구 사항 |
Python 자동 계측의 경우, 내보내기 프로그램의 엔드포인트가 4317 로 설정된 경우 OTEL_EXPORTER_OTLP_ENDPOINT 환경 변수를 설정해야 합니다. Python 자동 계측은 기본적으로 http/proto를 사용하고 원격 측정 데이터는 4318 포트로 설정해야 합니다.
주입을 활성화하기 위한 PodSpec 주석
instrumentation.opentelemetry.io/inject-python: "true"
5.2.10. 다중 컨테이너 포드 링크 복사링크가 클립보드에 복사되었습니다!
계측은 Pod 사양에 따라 기본적으로 사용 가능한 첫 번째 컨테이너에 주입됩니다. 주입을 위한 대상 컨테이너 이름을 지정할 수도 있습니다.
Pod 주석
instrumentation.opentelemetry.io/container-names: "<container_1>,<container_2>"
- 1
- 여러 컨테이너에 단일 계측을 주입하려면 이 주석을 사용하세요.
Go 자동 계측은 다중 컨테이너 자동 계측 주입을 지원하지 않습니다.
5.2.11. 여러 계측기를 갖춘 다중 컨테이너 포드 링크 복사링크가 클립보드에 복사되었습니다!
다중 컨테이너 포드의 하나 이상의 컨테이너에 애플리케이션 언어에 대한 계측을 주입하려면 다음 주석이 필요합니다.
instrumentation.opentelemetry.io/<application_language>-container-names: "<container_1>,<container_2>"
- 1
- 컨테이너당 하나의 언어에 대해서만 계측을 주입할 수 있습니다. 지원되는
<application_language>값 목록은 다음 표를 참조하세요.
| 언어 | <application_language> 에 대한 값 |
|---|---|
| ApacheHTTPD |
|
| DotNet |
|
| Java |
|
| NGINX |
|
| NodeJS |
|
| Python |
|
| SDK |
|
5.2.12. 서비스 메시와 함께 계측 CR 사용 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift Service Mesh에서 Instrumentation 사용자 정의 리소스(CR)를 사용하는 경우 b3multi 프로퍼게이터를 사용해야 합니다.