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.
This commit is contained in:
Alex Robinson 2015-03-06 22:36:03 +00:00
parent dca88634ae
commit 60f0e9d673
5 changed files with 11 additions and 8 deletions

View File

@ -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)
}
}

View File

@ -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 {

View File

@ -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 {

View File

@ -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() {

View File

@ -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)