func GotKitEndpointMiddleWare(operationName string) endpoint.Middleware {
	return func(next endpoint.Endpoint) endpoint.Endpoint {
		return func(ctx context.Context, request interface{}) (interface{}, error) {
			span, ctx := CreateSpan(ctx, operationName, nil)
			defer span.Finish()
			return next(ctx, request)
		}
	}
}
GotKitEndpointMiddleWare returns a gokit.Middleware which change the behavior of a gokit.endpoint
it had tracing capability
package tracing
import (
	"context"
	"fmt"
	"net/http"
	"github.com/go-kit/kit/endpoint"
)
func HTTPMiddleware(operationName string, next http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
		tags := make(map[string]interface{})
		tags["url"] = req.URL.String()
		parameters := req.URL.Query()
		for key, values := range parameters {
			if len(values) == 1 {
				tags[key] = values[0]
			} else {
				for i, value := range values {
					tags[fmt.Sprintf("%s[%d]", key, i)] = value
				}
			}
		}
		span, ctx := CreateSpanFromClientContext(req, operationName, &tags)
		defer span.Finish()
		req = req.WithContext(ctx)
		next.ServeHTTP(w, req)
	})
}