From 60f0e9d673467f4e7bd7f57e357f7fb1476a028d Mon Sep 17 00:00:00 2001 From: Alex Robinson Date: Fri, 6 Mar 2015 22:36:03 +0000 Subject: [PATCH] Fix the broken calls to the monitor() by having it take arguments as pointers. This is needed for the changes to various labels from later in the function to be picked up. --- pkg/apiserver/apiserver.go | 9 +++++---- pkg/apiserver/proxy.go | 2 +- pkg/apiserver/redirect.go | 2 +- pkg/apiserver/validator.go | 4 +++- pkg/apiserver/watch.go | 2 +- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/pkg/apiserver/apiserver.go b/pkg/apiserver/apiserver.go index 2307c0ae4ad..59ef048381f 100644 --- a/pkg/apiserver/apiserver.go +++ b/pkg/apiserver/apiserver.go @@ -68,9 +68,9 @@ func init() { // monitor is a helper function for each HTTP request handler to use for // instrumenting basic request counter and latency metrics. -func monitor(handler, verb, resource string, httpCode int, reqStart time.Time) { - requestCounter.WithLabelValues(handler, verb, resource, strconv.Itoa(httpCode)).Inc() - requestLatencies.WithLabelValues(handler, verb).Observe(float64((time.Since(reqStart)) / time.Microsecond)) +func monitor(handler string, verb, resource *string, httpCode *int, reqStart time.Time) { + requestCounter.WithLabelValues(handler, *verb, *resource, strconv.Itoa(*httpCode)).Inc() + requestLatencies.WithLabelValues(handler, *verb).Observe(float64((time.Since(reqStart)) / time.Microsecond)) } // monitorFilter creates a filter that reports the metrics for a given resource and action. @@ -78,7 +78,8 @@ func monitorFilter(action, resource string) restful.FilterFunction { return func(req *restful.Request, res *restful.Response, chain *restful.FilterChain) { reqStart := time.Now() chain.ProcessFilter(req, res) - monitor("rest", action, resource, res.StatusCode(), reqStart) + httpCode := res.StatusCode() + monitor("rest", &action, &resource, &httpCode, reqStart) } } diff --git a/pkg/apiserver/proxy.go b/pkg/apiserver/proxy.go index 09a4c7b9151..4666fa970b9 100644 --- a/pkg/apiserver/proxy.go +++ b/pkg/apiserver/proxy.go @@ -90,7 +90,7 @@ func (r *ProxyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { var apiResource string var httpCode int reqStart := time.Now() - defer monitor("proxy", verb, apiResource, httpCode, reqStart) + defer monitor("proxy", &verb, &apiResource, &httpCode, reqStart) requestInfo, err := r.apiRequestInfoResolver.GetAPIRequestInfo(req) if err != nil { diff --git a/pkg/apiserver/redirect.go b/pkg/apiserver/redirect.go index 5267c4cd296..5ef7a790be6 100644 --- a/pkg/apiserver/redirect.go +++ b/pkg/apiserver/redirect.go @@ -38,7 +38,7 @@ func (r *RedirectHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { var apiResource string var httpCode int reqStart := time.Now() - defer monitor("redirect", verb, apiResource, httpCode, reqStart) + defer monitor("redirect", &verb, &apiResource, &httpCode, reqStart) requestInfo, err := r.apiRequestInfoResolver.GetAPIRequestInfo(req) if err != nil { diff --git a/pkg/apiserver/validator.go b/pkg/apiserver/validator.go index f4c2bf91046..037204a540f 100644 --- a/pkg/apiserver/validator.go +++ b/pkg/apiserver/validator.go @@ -73,9 +73,11 @@ type ServerStatus struct { } func (v *validator) ServeHTTP(w http.ResponseWriter, r *http.Request) { + verb := "get" + apiResource := "" var httpCode int reqStart := time.Now() - defer monitor("validate", "get", "", httpCode, reqStart) + defer monitor("validate", &verb, &apiResource, &httpCode, reqStart) reply := []ServerStatus{} for name, server := range v.servers() { diff --git a/pkg/apiserver/watch.go b/pkg/apiserver/watch.go index e7698182c97..0f085b37683 100644 --- a/pkg/apiserver/watch.go +++ b/pkg/apiserver/watch.go @@ -87,7 +87,7 @@ func (h *WatchHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { var apiResource string var httpCode int reqStart := time.Now() - defer monitor("watch", verb, apiResource, httpCode, reqStart) + defer monitor("watch", &verb, &apiResource, &httpCode, reqStart) if req.Method != "GET" { notFound(w, req)