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

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

답안 예시 정보

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

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

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

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

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

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

이전 스크린샷에는 여러 개의 전형이 표시되어 있습니다. 한 개의 예시의 도움말이 펼쳐져 있으며 날짜, 트레이스 이름, 백분위수, 지연 시간 값이 표시됩니다.

주석을 선택하면 에스컬레이션에 연결된 트레이스가 표시됩니다.

에스컬레이션의 트레이스 세부정보 예시

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

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

이전 예에서 볼 수 있듯이, 트레이스의 현재 스팬을 측정항목 측정에 연결하는 예시를 작성하도록 OpenTelemetry를 구성할 수 있습니다. 하지만 예시를 작성하려면 다음을 실행해야 합니다.

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

    예를 들어 computeSubrequests 함수는 이전 안내를 따릅니다. subRequestsHistogram.Record 함수는 지연된 span.End 전에 tracer.Start 후에 호출됩니다. 컨텍스트 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
    }
    

    이 샘플에 관한 자세한 내용은 앱에 맞춤 트레이스 및 측정항목 추가를 참고하세요.

다음 단계