4장. Service Mesh를 사용하여 Red Hat OpenShift distributed tracing 데이터 수집 구성
Red Hat OpenShift Service Mesh를 Red Hat OpenShift distributed tracing 데이터 수집과 통합하여 OpenTelemetry 추적, 메트릭 및 로그를 측정, 생성, 수집 및 내보내 소프트웨어의 성능 및 동작을 분석하고 파악할 수 있습니다.
사전 요구 사항
- tempo Operator가 설치되어 있습니다. Tempo Operator 설치를 참조하십시오.
- Red Hat OpenShift distributed tracing data collection Operator가 설치되어 있습니다. 참조: OpenTelemetry Red Hat 빌드 설치
-
TempoStack은
tempo
네임스페이스에 설치 및 구성됩니다. TempoStack 인스턴스 설치를 참조하십시오. - Istio 인스턴스가 생성됩니다.
- Istio CNI 인스턴스가 생성됩니다.
프로세스
Red Hat OpenShift distributed tracing data collection Operator로 이동하여
istio-system
네임스페이스에OpenTelemetryCollector
리소스를 설치합니다.istio-system
네임스페이스의 OpenTelemetry 수집기 예kind: OpenTelemetryCollector apiVersion: opentelemetry.io/v1beta1 metadata: name: otel namespace: istio-system spec: observability: metrics: {} deploymentUpdateStrategy: {} config: exporters: otlp: endpoint: 'tempo-sample-distributor.tempo.svc.cluster.local:4317' tls: insecure: true receivers: otlp: protocols: grpc: endpoint: '0.0.0.0:4317' http: {} service: pipelines: traces: exporters: - otlp receivers: - otlp
추적을 활성화하고
meshConfig
에서 분산 추적 데이터 수집 추적 공급자를 정의하도록 Red Hat OpenShift Service Mesh를 구성합니다.추적 활성화 및 추적 공급자 정의 예
apiVersion: sailoperator.io/v1alpha1 kind: Istio metadata: # ... name: default spec: namespace: istio-system # ... values: meshConfig: enableTracing: true extensionProviders: - name: otel-tracing opentelemetry: port: 4317 service: otel-collector.istio-system.svc.cluster.local 1
- 1
service
필드는istio-system
네임스페이스의OpenTelemetry
수집기 서비스입니다.
Istio Telemetry 리소스를 생성하여
spec.values.meshConfig.ExtensionProviders
에 정의된 추적기를 활성화합니다.Istio Telemetry 리소스의 예
apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: otel-demo namespace: istio-system spec: tracing: - providers: - name: otel-tracing randomSamplingPercentage: 100
참고추적이 표시되는지 확인한 후
randomSamplingPercentage
값을 줄이거나 요청 수를 줄이기 위해기본값
으로 설정합니다.bookinfo
네임스페이스에info
애플리케이션을 배포합니다.$ oc create ns info
$ oc label ns <namespace_name> istio.io/rev= 1
$ oc apply -f https://raw.githubusercontent.com/istio/istio/release-1.23/samples/info/platform/kube/bookinfo.yaml -n bookinfo
- 1
- Istio 리소스
기본값
을 지정하고InPlace
업그레이드 전략을 사용하는 경우oc 레이블 ns info istio-injection=enabled
를 사용합니다.
참고<
revision-name>
을 찾으려면 다음 명령을 실행합니다.$ oc get istiorevisions.sailoperator.io
샘플 출력:
NAME TYPE READY STATUS IN USE VERSION AGE default-v1-23-0 Local True Healthy False v1.23.0 3m33s
productpage
Pod에 대한 트래픽을 생성하여 추적을 생성합니다.$ oc exec -it -n info deployments/productpage-v1 -c istio-proxy -- curl localhost:9080/productpage
다음 명령을 실행하여 통합을 검증하여 UI의 추적을 확인합니다.
$ oc get routes -n tempo tempo-sample-query-frontend
참고Jaeger UI의 OpenShift 경로는 Tempo 네임스페이스에 생성해야 합니다.
tempo-sample-query-frontend
서비스에 대해 수동으로 생성하거나Tempo
사용자 정의 리소스를.spec.template.queryFrontend.jaegerQuery.ingress.type: route
로 업데이트할 수 있습니다.