이 문서에서는 OpenTelemetry를 사용하여 애플리케이션에 관측 가능성 코드를 추가하는 방법을 설명합니다. OpenTelemetry는 널리 사용되는 프로엠워크에 대한 원격 분석을 생성하는 계측 라이브러리를 제공합니다. 애플리케이션별 동작을 측정하는 커스텀 계측을 추가하여 라이브러리에서 생성된 원격 분석을 보강할 수 있습니다.
이 문서에서 설명하는 원칙과 개념은 OpenTelemetry에서 지원하는 모든 언어로 제작된 앱에 적용할 수 있습니다. 계측에 대한 자세한 내용은 다음 문서를 참조하세요.
Go로 trace 및 측정항목 생성에 설명된 것과 동일한 Go 앱인 샘플 코드는 GitHub에서 사용 가능합니다. 전체 샘플을 보려면 more_vert 더보기를 클릭한 다음 GitHub에서 보기를 선택합니다.
시작하기 전에
Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs.
커스텀 trace 만들기
애플리케이션에서 커스텀 trace를 생성하려면 OpenTelemetry 스팬을 만드는 계측 코드를 추가합니다. OpenTelemetry에서 스팬은 trace의 빌딩 블록입니다.
스팬을 만들려면 다음을 수행합니다.
OpenTelemetry
Tracer
를 가져오도록 앱을 수정합니다. OpenTelemetry에서 추적기는 스팬의 생성자입니다. 다음 코드와 같이 추적기를 가져올 수 있습니다.scopeName
으로 표시되는 추적기 이름은 생성된 trace의 계측 범위를 식별합니다.tracer
인스턴스를 사용하여 스팬을 만듭니다. 다음 코드 샘플에서computeSubrequests
함수는 호출될 때마다 스팬을 생성합니다.computeSubrequests
함수에서 생성된 이전 코드 샘플의 스팬은 전체 함수에서 수행된 작업을 나타냅니다. 이는 함수의 첫 번째 단계가tracer.Start
를 사용하여 새 스팬을 시작하는 것이고span.End()
앞에defer
키워드를 사용하면 함수가 종료되기 직전에 스팬이 종료되기 때문입니다.
커스텀 측정항목 만들기
애플리케이션에서 측정항목을 생성하려면 앱 실행 중에 측정된 값을 기록하는 계측 코드를 추가합니다.
측정항목을 만들려면 다음을 수행합니다.
OpenTelemetry
Meter
를 가져오도록 앱을 수정합니다. OpenTelemetry에서 측정기는 측정항목을 기록하기 위해 측정항목 계측에 액세스합니다. 다음 코드와 같이 측정기를 가져올 수 있습니다.scopeName
으로 표시되는 측정기 이름은 생성된 측정항목의 계측 범위를 식별합니다.meter
인스턴스를 사용하여 측정항목을 기록할 수 있는 계측을 만듭니다. 예를 들어, 다음 코드에서는meter
를 사용하여 OpenTelemetry 히스토그램을 생성합니다.이전 코드는
sleepHistogram
이라는 히스토그램을 생성합니다.sleepHistogram
인스턴스를 사용하여randomSleep
함수가 호출될 때 결정되는 절전 모드 시간을 기록합니다.OpenTelemetry 내보내기 도구 구성에 따라 이러한 계측에서 기록된 측정항목을 애플리케이션에서 내보냅니다.