diff --git a/cmd/http-tracer.go b/cmd/http-tracer.go index 779a9440b..4a91a4088 100644 --- a/cmd/http-tracer.go +++ b/cmd/http-tracer.go @@ -118,12 +118,26 @@ func (r *recordResponseWriter) Body() []byte { return r.body.Bytes() } +// getOpName sanitizes the operation name for mc +func getOpName(name string) (op string) { + op = strings.TrimPrefix(name, "github.com/minio/minio/cmd.") + op = strings.TrimSuffix(op, "Handler-fm") + op = strings.Replace(op, "objectAPIHandlers", "s3", 1) + op = strings.Replace(op, "webAPIHandlers", "s3", 1) + op = strings.Replace(op, "adminAPIHandlers", "admin", 1) + op = strings.Replace(op, "(*storageRESTServer)", "internal", 1) + op = strings.Replace(op, "(*peerRESTServer)", "internal", 1) + op = strings.Replace(op, "(*lockRESTServer)", "internal", 1) + op = strings.Replace(op, "stsAPIHandlers", "sts", 1) + op = strings.Replace(op, "LivenessCheckHandler", "healthcheck", 1) + op = strings.Replace(op, "ReadinessCheckHandler", "healthcheck", 1) + return op +} + // Trace gets trace of http request func Trace(f http.HandlerFunc, logBody bool, w http.ResponseWriter, r *http.Request) trace.Info { - name := runtime.FuncForPC(reflect.ValueOf(f).Pointer()).Name() - name = strings.TrimPrefix(name, "github.com/minio/minio/cmd.") - name = strings.TrimSuffix(name, "Handler-fm") + name := getOpName(runtime.FuncForPC(reflect.ValueOf(f).Pointer()).Name()) bodyPlaceHolder := []byte("") var reqBodyRecorder *recordRequest @@ -136,7 +150,7 @@ func Trace(f http.HandlerFunc, logBody bool, w http.ResponseWriter, r *http.Requ if err == nil { t.NodeName = host.Name } - rq := trace.RequestInfo{Time: time.Now().UTC(), Method: r.Method, Path: r.URL.Path, RawQuery: r.URL.RawQuery} + rq := trace.RequestInfo{Time: time.Now().UTC(), Method: r.Method, Path: r.URL.Path, RawQuery: r.URL.RawQuery, Client: r.RemoteAddr} rq.Headers = cloneHeader(r.Header) rq.Headers.Set("Content-Length", strconv.Itoa(int(r.ContentLength))) rq.Headers.Set("Host", r.Host) diff --git a/pkg/trace/trace.go b/pkg/trace/trace.go index 6ebd6525c..d2b4123bc 100644 --- a/pkg/trace/trace.go +++ b/pkg/trace/trace.go @@ -38,6 +38,7 @@ type RequestInfo struct { RawQuery string `json:"rawquery,omitempty"` Headers http.Header `json:"headers,omitempty"` Body []byte `json:"body,omitempty"` + Client string `json:"client"` } // ResponseInfo represents trace of http request