mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
use opentracing ext package when possible
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user