use opentracing ext package when possible

This commit is contained in:
bergquist
2017-09-11 18:43:41 +02:00
parent 935dad653c
commit 89c86c7a22

View File

@@ -1,11 +1,11 @@
package middleware package middleware
import ( import (
"fmt"
"net/http" "net/http"
"time"
opentracing "github.com/opentracing/opentracing-go" opentracing "github.com/opentracing/opentracing-go"
tlog "github.com/opentracing/opentracing-go/log" "github.com/opentracing/opentracing-go/ext"
"gopkg.in/macaron.v1" "gopkg.in/macaron.v1"
) )
@@ -15,28 +15,21 @@ func RequestTracing() macaron.Handler {
rw := res.(macaron.ResponseWriter) rw := res.(macaron.ResponseWriter)
var span opentracing.Span var span opentracing.Span
opName := req.URL.Path tracer := opentracing.GlobalTracer()
carrier := opentracing.HTTPHeadersCarrier(req.Header) wireContext, _ := tracer.Extract(opentracing.HTTPHeaders, opentracing.HTTPHeadersCarrier(req.Header))
spanName := fmt.Sprintf("HTTP %s %s", req.Method, req.URL.Path)
wireContext, err := opentracing.GlobalTracer().Extract( span = tracer.StartSpan(spanName, ext.RPCServerOption(wireContext))
opentracing.HTTPHeaders, carrier)
if err != nil {
span = opentracing.StartSpan(opName)
} else {
span = opentracing.StartSpan(opName, opentracing.ChildOf(wireContext))
}
defer span.Finish() defer span.Finish()
ctx := opentracing.ContextWithSpan(req.Context(), span) ctx := opentracing.ContextWithSpan(req.Context(), span)
req = req.WithContext(ctx) req = req.WithContext(ctx)
start := time.Now()
c.Next() c.Next()
status := rw.Status() status := rw.Status()
span.LogFields( ext.HTTPStatusCode.Set(span, uint16(status))
tlog.Int("http.status_code", status), ext.HTTPUrl.Set(span, req.RequestURI)
tlog.Float64("waited.millis", float64(time.Since(start)/time.Millisecond))) ext.HTTPMethod.Set(span, req.Method)
} }
} }