Opentelemetry의 추적 ID에서 범위 구성
컨텍스트 전파는 일반적으로 상위 추적 ID를 검색하고 범위를 하위로 생성하는 데 사용됩니다. 그러나 메시지 교환에 헤더가 사용되는 시나리오에서는 대체 접근 방식이 필요합니다.
문자열 추적 ID에서 범위를 생성하려면 다음 단계를 수행할 수 있습니다.
추적 및 범위 ID를 구문 분석하는 함수 구성:
func constructNewSpanContext(request NewRequest) (spanContext trace.SpanContext, err error) {
traceID, err := trace.TraceIDFromHex(request.TraceID)
if err != nil {
fmt.Println("error:", err)
}
spanID, err := trace.SpanIDFromHex(request.SpanID)
if err != nil {
fmt.Println("error:", err)
}
spanContextConfig := trace.SpanContextConfig{
TraceID: traceID,
SpanID: spanID,
TraceFlags: 01,
Remote: false,
}
spanContext = trace.NewSpanContext(spanContextConfig)
return spanContext, nil
}
이 함수는 요청에서 추적 및 범위 ID를 추출하고 SpanContext 개체를 구성합니다.
컨텍스트에 SpanContext 삽입:
spanContext, err := constructNewSpanContext(request)
if err != nil {
fmt.Println("ERROR:", err)
}
requestContext := context.Background()
requestContext = trace.ContextWithSpanContext(requestContext, spanContext)
SpanContext는 요청 컨텍스트를 강화하여 추적의 지속을 나타내는 데 사용됩니다.
새 범위:
var requestInLoopSpan trace.Span
childContext, requestInLoopSpan := otel.Tracer("inboundmessage").Start(requestContext, "requestInLoopSpan")
requestInLoopSpan.AddEvent("processing....")
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3