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 /weed/s3api/stats.go | |
| parent | 79ab10e3007f95b099f15d0ae80070562bc08eef (diff) | |
| download | seaweedfs-68463e92c1aa8dbec2c2bc0151f2c5809f36b131.tar.xz seaweedfs-68463e92c1aa8dbec2c2bc0151f2c5809f36b131.zip | |
add status code in S3RequestCounter
Diffstat (limited to 'weed/s3api/stats.go')
| -rw-r--r-- | weed/s3api/stats.go | 27 |
1 files changed, 22 insertions, 5 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() } } |
