마이크로서비스에서 OpenTelemetry Go 계측 라이브러리 업그레이드

OpenTelemetry은 진행 중인 OpenCensus와 OpenTracing의 병합입니다. 2021년 현재 아직 초기 단계입니다. 우리는 Go 서비스에 계측 라이브러리opentelemetry-go 및 [opentelemetry-go-contrib]https://github.com/open-telemetry/opentelemetry-go-contrib/ )를 사용하고 있습니다.

이 게시물은 마이크로 서비스 환경에서 계측 라이브러리를 업그레이드하는 방법에 대한 것입니다. 짐작하셨겠지만 간단하지 않습니다.

업그레이드는 쉽습니다. go get을 실행하세요.



예, 아니오. Opentelemtry-go는 여전히 활발하게 개발되고 있으며 아직 일반 릴리스가 아닙니다. 따라서 브레이킹 체인지가 예상됩니다. 일부 패키지는 이름이 바뀌거나 완전히 사라질 수 있습니다. 업그레이드할 때 주요 변경 사항을 인식하고 더 이상 사용되지 않는 패키지 또는 메서드 사용을 중지해야 합니다.

훌륭한 기능 기록, 버그 수정 및 주요 변경 사항을 제공하는 검토Changelog를 할 수 있습니다. 모든 브레이킹 체인지에 대한 PR 번호는 라인 옆에 제공됩니다. 예를 들어:

Metric SDK/API implementation type InstrumentKind moves into sdkapi sub-package. (#2091)



저장소에서 PR #2091을 검색하고 변경된 사항을 찾으십시오. 해당 PR 관리자는 코드베이스에서 이 주요 변경에 대한 모든 참조를 수정해야 주요 변경을 채택하기 위해 무엇을 변경해야 하는지 알 수 있습니다.

하지만 때로는 따를 수 있는 주요 변경 사항이 너무 많습니다. 그런 다음 그들의 예를 확인하는 것이 좋습니다. example 폴더에는 특정 기능을 사용하는 방법에 대한 작은 예가 있습니다. 예를 들어, Prometheus로 내보내기. 코드에서 수행 중인 작업이 해당 단계와 일치하는지 확인합니다.

업그레이드가 완료되었습니다. 마이크로서비스는 어떻게 되나요?



다른 서비스에 의존하지 않는 단일 서비스가 있는 경우 해당 부분을 건너뛸 수 있습니다. 다음 시나리오를 상상해 보십시오.



이 종속성 그래프에서 서비스 A와 서비스 B는 모두 otel v0.20.0을 사용합니다. 서비스 B는 서비스 A에 의존합니다. 이제 서비스 B는 otel v0.25.0으로 업그레이드하려고 합니다. 작동하지 않을 수 있습니다. 서비스 B의 모든 종속성은 이제 otel v0.25.0과 호환되지만 서비스 B는 서비스 A에 종속되므로 go mod는 여전히 otel v0.20.0 아티팩트를 다운로드합니다. 주요 변경 사항이 있는 경우 다음과 같은 ambiguous import 오류가 표시됩니다.

$ go mod tidy
github.com/your-service imports
        go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin tested by
        go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin.test imports
        go.opentelemetry.io/contrib/propagators/b3: ambiguous import: found package go.opentelemetry.io/contrib/propagators/b3 in multiple modules:
        go.opentelemetry.io/contrib/propagators v0.20.0 (~/workspace/gow/pkg/mod/go.opentelemetry.io/contrib/[email protected]/b3)
        go.opentelemetry.io/contrib/propagators/b3 v1.0.0 (~/workspace/gow/pkg/mod/go.opentelemetry.io/contrib/propagators/[email protected])


go.mod 파일을 사용하지 않기 때문에 v0.20.0에 대한 참조가 없습니다. 그러나 go.sum에서 이전 버전의 해시를 찾을 수 있습니다.

이미 해결 방법을 알려주세요.



종속성 그래프와 관련하여 업그레이드하십시오. 이 시나리오에서는 먼저 서비스 A에서 호텔을 업그레이드해야 합니다. 그런 다음 서비스 B에서 서비스 A 종속성을 업그레이드합니다. 그러면 otel 종속성 오류가 발생할 수 있습니다. otel 종속성을 업그레이드하고 주요 변경 사항을 해결합니다.

축하합니다. 계측 라이브러리를 업그레이드했습니다.

좋은 웹페이지 즐겨찾기