diff options
| author | Konstantin Lebedev <lebedev_k@tochka.com> | 2020-10-01 00:59:39 +0500 |
|---|---|---|
| committer | Konstantin Lebedev <lebedev_k@tochka.com> | 2020-10-01 00:59:39 +0500 |
| commit | 68463e92c1aa8dbec2c2bc0151f2c5809f36b131 (patch) | |
| tree | 369b2fbfc9dad5f2d73a801116bc1079ba3ad659 | |
| parent | 79ab10e3007f95b099f15d0ae80070562bc08eef (diff) | |
| download | seaweedfs-68463e92c1aa8dbec2c2bc0151f2c5809f36b131.tar.xz seaweedfs-68463e92c1aa8dbec2c2bc0151f2c5809f36b131.zip | |
add status code in S3RequestCounter
| -rw-r--r-- | weed/s3api/stats.go | 27 | ||||
| -rw-r--r-- | weed/stats/metrics.go | 4 |
2 files changed, 24 insertions, 7 deletions
diff --git a/weed/s3api/stats.go b/weed/s3api/stats.go index 16a546c66..b667b32a0 100644 --- a/weed/s3api/stats.go +++ b/weed/s3api/stats.go @@ -4,18 +4,35 @@ import ( stats_collect "github.com/chrislusf/seaweedfs/weed/stats" "github.com/chrislusf/seaweedfs/weed/util" "net/http" + "strconv" "time" ) -func track(f http.HandlerFunc, action string) http.HandlerFunc { +type StatusRecorder struct { + http.ResponseWriter + Status int +} - return func(w http.ResponseWriter, r *http.Request) { +func NewStatusResponseWriter(w http.ResponseWriter) *StatusRecorder { + return &StatusRecorder{w, http.StatusOK} +} - w.Header().Set("Server", "SeaweedFS S3 "+util.VERSION) +func (r *StatusRecorder) WriteHeader(status int) { + r.Status = status + r.ResponseWriter.WriteHeader(status) +} +func (r *StatusRecorder) Flush() { + r.ResponseWriter.(http.Flusher).Flush() +} + +func track(f http.HandlerFunc, action string) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Server", "SeaweedFS S3 "+util.VERSION) + recorder := NewStatusResponseWriter(w) start := time.Now() - stats_collect.S3RequestCounter.WithLabelValues(action).Inc() - f(w, r) + f(recorder, r) stats_collect.S3RequestHistogram.WithLabelValues(action).Observe(time.Since(start).Seconds()) + stats_collect.S3RequestCounter.WithLabelValues(action, strconv.Itoa(recorder.Status)).Inc() } } diff --git a/weed/stats/metrics.go b/weed/stats/metrics.go index d930caf0f..a60cda290 100644 --- a/weed/stats/metrics.go +++ b/weed/stats/metrics.go @@ -16,7 +16,7 @@ import ( ) var ( - Gather = prometheus.NewRegistry() + Gather = prometheus.NewRegistry() FilerRequestCounter = prometheus.NewCounterVec( prometheus.CounterOpts{ @@ -99,7 +99,7 @@ var ( Subsystem: "s3", Name: "request_total", Help: "Counter of s3 requests.", - }, []string{"type"}) + }, []string{"type", "code"}) S3RequestHistogram = prometheus.NewHistogramVec( prometheus.HistogramOpts{ Namespace: "SeaweedFS", |
