11.7. 계측기 문제 해결
계측 문제를 해결하려면 다음 문제 중 하나를 찾아보세요.
- 작업 부하에 대한 계측 주입 문제
- 계측 라이브러리의 데이터 생성 문제
11.7.1. 작업 부하에 계측기 주입 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
계측 주입 문제를 해결하려면 다음 작업을 수행할 수 있습니다.
-
Instrumentation객체가 생성되었는지 확인 - init-container가 시작되었는지 확인
- 리소스가 올바른 순서로 배포되었는지 확인
- 운영자 로그에서 오류 검색
- 포드 주석을 다시 확인하세요
프로세스
다음 명령을 실행하여
Instrumentation개체가 성공적으로 생성되었는지 확인하세요.$ oc get instrumentation -n <workload_project>1 - 1
- 계측이 생성된 네임스페이스입니다.
다음 명령을 실행하여 워크로드에 계측을 주입하기 위한 전제 조건인
opentelemetry-auto-instrumentationinit-container가 성공적으로 시작되었는지 확인하세요.$ oc get events -n <workload_project>1 - 1
- 워크로드에 대한 계측이 주입되는 네임스페이스입니다.
출력 예
... Created container opentelemetry-auto-instrumentation ... Started container opentelemetry-auto-instrumentation자동 계측이 올바르게 작동하도록 리소스가 올바른 순서로 배포되었는지 확인하세요. 올바른 순서는 애플리케이션보다 먼저
Instrumentation사용자 정의 리소스(CR)를 배포하는 것입니다.계측CR에 대한 자세한 내용은 "계측 구성" 섹션을 참조하세요.참고포드가 시작되면 OpenTelemetry Operator의 Red Hat 빌드는 자동 계측을 주입하기 위한 지침이 포함된 주석을 확인하기 위해
InstrumentationCR을 확인합니다. 일반적으로 Operator는 자동 계측 및 환경 변수를 애플리케이션 컨테이너에 주입하는 init 컨테이너를 애플리케이션의 Pod에 추가합니다. 애플리케이션이 배포될 때 운영자가계측CR을 사용할 수 없는 경우 운영자는 자동 계측을 주입할 수 없습니다.배포 순서를 수정하려면 다음 단계가 필요합니다.
- 계측 설정을 업데이트합니다.
- 계측 객체를 삭제합니다.
- 애플리케이션을 다시 배포합니다.
다음 명령을 실행하여 Operator 로그에서 계측 오류를 검사하세요.
$ oc logs -l app.kubernetes.io/name=opentelemetry-operator --container manager -n openshift-opentelemetry-operator --follow특정 프로그래밍 언어의 계측에 대한 포드 주석 문제를 해결합니다. "계측 구성"에서 필수 주석 필드와 값을 확인하세요.
계측하고 있는 애플리케이션 포드에 올바른 주석이 표시되어 있고 적절한 자동 계측 설정이 적용되었는지 확인하세요.
예
instrumentation.opentelemetry.io/inject-python="true"계측된 Python 애플리케이션에 대한 Pod 주석을 가져오는 예제 명령
$ oc get pods -n <workload_project> -o jsonpath='{range .items[?(@.metadata.annotations["instrumentation.opentelemetry.io/inject-python"]=="true")]}{.metadata.name}{"\n"}{end}'- 계측 대상 프로그래밍 언어에 맞게 계측 객체에 적용된 주석이 올바른지 확인하세요.
동일한 네임스페이스에 여러 계측이 있는 경우 주석에서
Instrumentation개체의 이름을 지정합니다.예
instrumentation.opentelemetry.io/inject-nodejs: "<instrumentation_object>"Instrumentation객체가 다른 네임스페이스에 있는 경우 주석에서 네임스페이스를 지정합니다.예
instrumentation.opentelemetry.io/inject-nodejs: "<other_namespace>/<instrumentation_object>"-
OpenTelemetryCollector사용자 지정 리소스가spec.template.metadata.annotations아래에 자동 계측 주석을 지정하는지 확인합니다. 자동 계측 주석이spec.metadata.annotations에 있는 경우spec.template.metadata.annotations로 이동합니다.
11.7.2. 계측 라이브러리에 의한 원격 측정 데이터 생성 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
계측 라이브러리에서 원격 측정 데이터 생성과 관련된 문제를 해결하려면 엔드포인트를 확인하고, 애플리케이션 로그에서 오류를 찾고, 수집기가 원격 측정 데이터를 수신하고 있는지 확인하세요.
프로세스
계측기가 올바른 엔드포인트로 데이터를 전송하는지 확인하세요.
$ oc get instrumentation <instrumentation_name> -n <workload_project> -o jsonpath='{.spec.endpoint}'Instrumentation객체의 기본 엔드포인트http://localhost:4317은애플리케이션 포드에 사이드카로 배포된 Collector 인스턴스에만 적용할 수 있습니다. 잘못된 엔드포인트를 사용하는 경우Instrumentation객체를 편집하고 애플리케이션을 다시 배포하여 수정하세요.계측이 제대로 작동하지 않는다는 것을 나타낼 수 있는 오류 메시지가 있는지 애플리케이션 로그를 검사하세요.
$ oc logs <application_pod> -n <workload_project>- 애플리케이션 로그에 계측 장비가 제대로 작동하지 않을 수 있다는 오류 메시지가 포함되어 있는 경우 OpenTelemetry SDK와 라이브러리를 로컬에 설치합니다. 그런 다음 OpenShift Container Platform 없이 로컬에서 애플리케이션을 실행하고 계측 라이브러리와 애플리케이션 간의 문제를 해결하세요.
- 디버그 내보내기를 사용하여 원격 측정 데이터가 대상 OpenTelemetry Collector 인스턴스에 도달하는지 확인합니다. 자세한 내용은 "디버그 내보내기"를 참조하세요.