Merge branch 'master' into caa-fix
This commit is contained in:
commit
aafc8ddd8c
|
|
@ -8,7 +8,6 @@ package metrics
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
|
@ -45,27 +44,10 @@ func (h *HTTPMonitor) watchAndServe(w http.ResponseWriter, r *http.Request) {
|
||||||
inFlight := atomic.AddInt64(&h.connectionsInFlight, 1)
|
inFlight := atomic.AddInt64(&h.connectionsInFlight, 1)
|
||||||
h.stats.Gauge(fmt.Sprintf("%s.HTTP.OpenConnections", h.statsPrefix), inFlight, 1.0)
|
h.stats.Gauge(fmt.Sprintf("%s.HTTP.OpenConnections", h.statsPrefix), inFlight, 1.0)
|
||||||
|
|
||||||
cOpened := time.Now()
|
|
||||||
h.handler.ServeHTTP(w, r)
|
h.handler.ServeHTTP(w, r)
|
||||||
cClosed := time.Since(cOpened)
|
|
||||||
|
|
||||||
inFlight = atomic.AddInt64(&h.connectionsInFlight, -1)
|
inFlight = atomic.AddInt64(&h.connectionsInFlight, -1)
|
||||||
h.stats.Gauge(fmt.Sprintf("%s.HTTP.ConnectionsInFlight", h.statsPrefix), inFlight, 1.0)
|
h.stats.Gauge(fmt.Sprintf("%s.HTTP.ConnectionsInFlight", h.statsPrefix), inFlight, 1.0)
|
||||||
|
|
||||||
endpoint := ""
|
|
||||||
// If request fails don't record the endpoint as an attacker could use this to
|
|
||||||
// eat up all our memory by just hitting 404s all day
|
|
||||||
if w.Header().Get("Content-Type") == "application/problem+json" {
|
|
||||||
endpoint = "Failed"
|
|
||||||
} else {
|
|
||||||
// If r.URL has more than two segments throw the rest away to simplify metrics
|
|
||||||
segments := strings.Split(r.URL.Path, "/")
|
|
||||||
if len(segments) > 3 {
|
|
||||||
segments = segments[:3]
|
|
||||||
}
|
|
||||||
endpoint = strings.Join(segments, "/")
|
|
||||||
}
|
|
||||||
h.stats.TimingDuration(fmt.Sprintf("%s.HTTP.ResponseTime.%s", h.statsPrefix, endpoint), cClosed, 1.0)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// FBAdapter provides a facebookgo/stats client interface that sends metrics via
|
// FBAdapter provides a facebookgo/stats client interface that sends metrics via
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue