今日已办
Trace
otelzap :opentelemetry-go-extra/otelzap at main · uptrace/opentelemetry-go-extra (github.com)
go get github.com/uptrace/opentelemetry-go-extra/otelzap
声明 Tracer ,一个应用创建一个 Tracer (需要从venus中来传来的trace_id构造
)
var consumerTracer = otel.Tracer("profile-consumer",
trace.WithInstrumentationAttributes(attribute.String("profile.work", "consumer")))
处理异常,日志记录 & Span 记录错误 & 设置状态
func handlerErr(span trace.Span, ctx context.Context, msg string, err error) {
// otelzap 集成zap
otelzap.L().Ctx(ctx).Error(msg, zap.Error(err))
span.RecordError(err)
span.SetStatus(codes.Error, msg)
}
在每一个Handler中使用同一个 Tracer 创建Span
func (profileCtx *ProfileContext) UnpackKafkaMessage(ctx context.Context) (needBreak bool, tpsStatus string, contextErr error) {
var span trace.Span
// 根Span,类型为内部
profileCtx.Ctx, span = consumerTracer.Start(profil