문제 해결

이 페이지에는 Trace의 문제 해결 정보가 포함되어 있습니다.

Trace 인터페이스에 데이터 없음

trace 데이터가 있을 것으로 예상될 때 Google Cloud 프로젝트에서 trace를 볼 수 없는 경우 다음 단계를 따르세요.

  1. Google Cloud 콘솔의 탐색 패널에서 API 및 서비스를 선택하고 API 및 서비스 사용 설정을 클릭한 다음 Cloud Trace API를 사용 설정합니다.

    Cloud Trace API 설정으로 이동

  2. API 사용 설정됨이 표시되어 있으면 API가 이미 사용 설정된 것입니다. 그렇지 않으면 사용 설정 버튼을 클릭합니다.

  3. Google Cloud 콘솔의 탐색 패널에서 API 및 서비스를 선택하고 Cloud Trace API 라벨이 지정된 행을 찾습니다.

    API 및 서비스 설정으로 이동

    다음을 시도해 보세요.

    • 요청 라벨이 지정된 열에 숫자 정보가 나열되지 않으면 trace 데이터가 Google Cloud 프로젝트로 전송되지 않는 것입니다.

      이 문제를 해결하려면 애플리케이션과 프록시가 올바른 프로젝트로 trace를 보내도록 구성되었는지 확인합니다.

    • Cloud Trace API를 선택하고 측정항목 탭을 선택한 다음 API 메서드별 오류 라벨이 지정된 차트를 찾습니다.

      • 쓰기가 실패하면 사용자 인증 정보를 제공하는 서비스 계정에 Cloud Trace 에이전트(roles/cloudtrace.agent) 역할을 부여합니다. 애플리케이션이 Google Cloud 프로젝트에 스팬 데이터를 쓸 수 있도록 하는 cloudtrace.traces.patch 권한이 포함되어 있습니다.

        자세한 내용은 Cloud Trace IAM 역할을 참조하세요.

      • 읽기에 실패하는 경우 Google Cloud 프로젝트의 IAM 역할에 Cloud Trace 사용자(roles/cloutrace.user) 역할의 권한이 포함되어 있는지 확인합니다. 이 역할의 권한 목록은 Cloud Trace IAM 역할을 참조하세요.

OpenTelemetry를 사용하도록 Go 앱을 업데이트한 후 trace 데이터가 없음

애플리케이션이 클라이언트 라이브러리를 사용하여 trace를 캡처하고 OpenTelemetry를 사용하도록 애플리케이션을 업데이트한 후에는 더 이상 Cloud Trace 데이터가 표시되지 않습니다.

Go용 일부 Google 클라이언트 라이브러리는 OpenCensus와 통합되므로 OpenCensus 브리지를 사용해야 합니다. 브리지로 해결된 문제에 대한 자세한 내용은 OpenCensus 브리지를 참조하세요.

Go용 Google 클라이언트 라이브러리의 업데이트에 대한 자세한 내용은 문제 #4237을 참조하세요.

배포된 앱의 trace 데이터 없음

Cloud Trace API를 사용하여 Google Cloud 프로젝트에 데이터를 전송하는 앱을 배포했지만 trace 데이터가 수집되지 않습니다.

다음을 시도해 보세요.

  • Google Cloud 콘솔의 Trace 탐색기 페이지에 데이터가 표시되지 않으면 Trace 인터페이스에 데이터 없음 섹션의 안내를 따르세요.

  • 앱이 Google Cloud에 배포되지 않았거나 서비스 계정을 사용하여 사용자 인증 정보를 제공하는 경우 서비스 계정에 Cloud Trace 에이전트(roles/cloudtrace.agent) 역할이 부여되었는지 확인합니다.

    이 역할에는 애플리케이션이 Google Cloud 프로젝트에 스팬 데이터를 쓸 수 있도록 하는 cloudtrace.traces.patch 권한이 포함됩니다.

  • 앱에서 OpenTelemetry를 사용하는 경우 다음을 수행합니다.

    • 루트 서비스의 경우 OpenTelemetry가 샘플링 레이트가 0.5traceidratio 샘플러를 사용하도록 환경 변수를 업데이트합니다.

      export OTEL_TRACES_SAMPLER="traceidratio"
      export OTEL_TRACES_SAMPLER_ARG="0.5"
      
    • 다른 모든 서비스의 경우 기본 샘플러인 parentbased_always_on을 사용하도록 OTEL_TRACES_SAMPLER 환경 변수를 설정하지 않은 상태로 둡니다. 기본 설정은 스팬에 대한 샘플링 결정이 해당 스팬이 존재하는 경우 상위 스팬에서 상속된다는 것을 의미합니다. 상위 스팬이 없으면 스팬이 샘플링됩니다.

    애플리케이션이 항상 모든 스팬을 샘플링하지 않는 한, 엔드 투 엔드 요청의 각 구성요소가 자체적으로 샘플링을 결정하기 때문에 요청이 엔드-투-엔드 trace되도록 강제하는 것은 일반적으로 가능하지 않습니다. 그러나 이 플래그를 true로 설정하여 sampled 플래그를 trace 헤더에 추가하면 결정에 영향을 줄 수 있습니다. 이 설정은 요청을 샘플링하기 위한 하위 구성요소에 대한 힌트입니다. trace 헤더에 대한 자세한 내용은 컨텍스트 전파 프로토콜을 참조하세요.

trace에 스팬 ID 메시지 누락

trace에 '누락된 스팬 ID' 메시지가 포함되어 있습니다.

분산 trace 시스템에서는 불완전한 trace가 예상됩니다. 샘플링된 스팬에 수신되지 않은 다른 스팬에 대한 참조가 포함된 경우 trace가 불완전합니다. 다음과 같은 이유로 해결되지 않은 참조가 발생할 수 있습니다.

  • 참조된 스팬이 샘플링되지 않았습니다.
  • 참조된 스팬이 샘플링되었지만 아직 Cloud Trace에서 수신되지 않았거나, 스팬이 수신되었지만 저장되지 않았습니다.

불완전한 trace를 볼 때는 Cloud Trace에서 trace 세부정보 창에 '누락된 스팬 ID' 메시지를 표시합니다.

'스팬 ID 누락' 메시지가 계속 표시되면 다음을 시도해 보세요.

  • 관리하는 구성요소의 경우, 이 필드가 있을 때 헤더의 sampled 플래그 플래그를 준수하고 전파되어야 합니다. 이 설정은 요청을 샘플링하기 위한 하위 구성요소에 대한 힌트입니다. trace 헤더에 대한 자세한 내용은 컨텍스트 전파 프로토콜을 참조하세요.

    Google Cloud 서비스에는 일반적으로 이 힌트가 사용됩니다. 하지만 trace 데이터 쓰기 속도도 제한됩니다.

  • Anthos Service Mesh를 사용하는 경우 해당 구성의 trace 컨텍스트 전파에 대한 안내를 따라야 합니다. Anthos Service Mesh 안내는 Trace 컨텍스트 전파를 참조하세요.