실례를 사용하여 측정항목과 trace 간의 상관관계 보기

이 문서에서는 측정항목 데이터 포인트에 연결된 예시 데이터 포인트인 예시를 설명합니다. 예시의 한 가지 용도는 trace에 대한 링크를 저장하는 것이며, 이를 통해 측정항목과 trace 데이터의 상관관계를 파악할 수 있습니다. 이 문서에서는 OpenTelemetry를 사용하여 예시를 생성하는 방법도 설명합니다.

예시 정보

예시는 임의 데이터를 측정항목 데이터와 연결하는 방법입니다. 이를 사용하여 비측정항목 데이터를 측정에 연결할 수 있습니다. 예시의 한 가지 용도는 trace 데이터를 측정항목 데이터와 연결하는 것입니다. Cloud Monitoring에서 예시를 Distribution 값 유형의 측정항목 데이터에 연결할 수 있습니다. 분포 값 측정항목은 여러 측정값을 수집하여 버킷으로 그룹화합니다. 각 '포인트'는 버킷 수를 나열하는 배열인 히스토그램입니다. 실제 측정값은 유지되지 않고 버킷 수만 유지됩니다. 자세한 내용은 분포 값 측정항목 정보를 참조하세요.

측정항목 데이터 포인트가 기록되면 Exemplar 객체의 배열을 해당 데이터에 연결할 수 있습니다. 예시를 사용하면 측정항목 데이터에 유용한 정보를 연결할 수 있습니다. 예를 들어 OpenTelemetry는 예시를 작성할 때 trace의 현재 스팬에 링크를 연결합니다.

히스토그램 데이터는 일반적으로 히트맵을 사용하여 표시됩니다. '포인트'에 예시가 포함된 경우 Cloud Monitoring은 히트맵에 점으로 주석을 추가합니다.

  • 측정항목 포인트에 대한 요약 정보를 보려면 주석에 대한 도움말을 활성화합니다.
  • trace에 액세스하려면 주석을 선택합니다.

예를 들어 Go로 trace 및 측정항목 생성에 설명된 샘플 애플리케이션은 OpenTelemetry를 사용하여 측정항목 데이터, trace 데이터, 예시를 작성합니다. 다음 스크린샷은 애플리케이션을 여러 번 실행한 후의 prometheus/http_server_duration_milliseconds/histogram 측정항목 값을 보여줍니다.

여러 예시를 보여주는 히트맵 예시

이전 스크린샷에서는 여러 예시를 보여줍니다. 하나의 예시에 대한 도움말이 펼쳐지고 날짜, trace 이름, 백분위수, 지연 시간 값이 표시됩니다.

주석을 선택하면 예시에 연결된 trace가 표시됩니다.

예시에 대한 trace 세부정보의 예시

표시된 정보가 충분히 상세하지 않은 경우 Trace에서 보기를 선택하면 Trace 탐색기 페이지가 열립니다. 이 페이지에서 trace 속성을 보고 로그 항목에 대한 링크에 액세스할 수 있습니다.

OpenTelemetry 예시를 사용 설정하는 방법

이전 예시에 표시된 것처럼 trace의 현재 스팬을 측정항목 측정에 연결하는 예시를 작성하도록 OpenTelemetry를 구성할 수 있습니다. 하지만 예시를 작성하려면 다음을 수행해야 합니다.

  1. OpenTelemetry 측정항목 및 trace SDK를 모두 구성합니다.
  2. 커스텀 계측에 대한 예시를 포함하려면 측정항목이 스팬 내에 기록되어 있는지, 스팬에서 측정항목 측정값과 함께 컨텍스트를 전달하는지 확인해야 합니다.

    예를 들어 computeSubrequests 함수는 이전 안내를 따릅니다. subRequestsHistogram.Record 함수는 tracer.Start 이후 그리고 지연된 span.End 이전에 호출됩니다. 컨텍스트 ctxtracer.Start에서 Record 함수로 전달된다는 점에 유의하세요.

    func computeSubrequests(r *http.Request, subRequests int) error {
    	// Add custom span representing the work done for the subrequests
    	ctx, span := tracer.Start(r.Context(), "subrequests")
    	defer span.End()
    
    	// Make specified number of http requests to the /single endpoint.
    	for i := 0; i < subRequests; i++ {
    		if err := callSingle(ctx); err != nil {
    			return err
    		}
    	}
    	// record number of sub-requests made
    	subRequestsHistogram.Record(ctx, int64(subRequests))
    	return nil
    }
    

    이 샘플에 대한 자세한 내용은 앱에 커스텀 trace 및 측정항목 추가를 참조하세요.

다음 단계