diff options
| author | hilimd <68371223+hilimd@users.noreply.github.com> | 2020-10-10 13:07:57 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-10 13:07:57 +0800 |
| commit | 411e49f96494629fa3da334e8dc7cc15bd4d19cd (patch) | |
| tree | 1756f0a2f86c871a6db67df7ecbd509c9df32233 /weed/s3api/stats.go | |
| parent | ac162fc85769cb1b2a1f8694f9644eae7d0ce6c8 (diff) | |
| parent | 4a15e9c830de1b654515308e5be8380ffa34aefa (diff) | |
| download | seaweedfs-411e49f96494629fa3da334e8dc7cc15bd4d19cd.tar.xz seaweedfs-411e49f96494629fa3da334e8dc7cc15bd4d19cd.zip | |
Merge pull request #23 from chrislusf/master
sync
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() } } |
