Merge pull request #13452 from ninjadq/fix_status_code_issue_on_metrics

Fix status code in metrics issue
This commit is contained in:
Daniel Jiang 2020-11-23 10:37:47 +08:00 committed by GitHub
commit 3536a5dfac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 6 deletions

View File

@ -6,23 +6,22 @@ import (
"time"
"github.com/goharbor/harbor/src/core/config"
"github.com/goharbor/harbor/src/lib"
"github.com/goharbor/harbor/src/lib/metric"
)
func instrumentHandler(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
now, url, code := time.Now(), r.URL.EscapedPath(), "0"
now, url := time.Now(), r.URL.EscapedPath()
metric.TotalInFlightGauge.WithLabelValues(url).Inc()
defer metric.TotalInFlightGauge.WithLabelValues(url).Dec()
rc := lib.NewResponseRecorder(w)
next.ServeHTTP(w, r)
if r.Response != nil {
code = strconv.Itoa(r.Response.StatusCode)
}
next.ServeHTTP(rc, r)
metric.TotalReqDurSummary.WithLabelValues(r.Method, url).Observe(time.Since(now).Seconds())
metric.TotalReqCnt.WithLabelValues(r.Method, code, url).Inc()
metric.TotalReqCnt.WithLabelValues(r.Method, strconv.Itoa(rc.StatusCode), url).Inc()
})
}