diff options
| author | Christine Dodrill <me@christine.website> | 2019-12-09 10:48:40 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-12-09 10:48:40 -0500 |
| commit | eb26857c1d5973bedc91c3fc1acaf4434809bbd5 (patch) | |
| tree | 926be802355da24afb3cf6ed8496a2b2d656e1a1 /internal/middleware | |
| parent | 583cf248b3fe7ebb06d89ba32fddeee70fb14c2c (diff) | |
| download | xesite-eb26857c1d5973bedc91c3fc1acaf4434809bbd5.tar.xz xesite-eb26857c1d5973bedc91c3fc1acaf4434809bbd5.zip | |
Within package layout (#102)
* blog: go package layout
* eat my own dogfood
* internal: test date
* blog/go-package-layout: streamline
* oops
Diffstat (limited to 'internal/middleware')
| -rw-r--r-- | internal/middleware/metrics.go | 43 | ||||
| -rw-r--r-- | internal/middleware/requestid.go | 31 |
2 files changed, 0 insertions, 74 deletions
diff --git a/internal/middleware/metrics.go b/internal/middleware/metrics.go deleted file mode 100644 index f9d7e0f..0000000 --- a/internal/middleware/metrics.go +++ /dev/null @@ -1,43 +0,0 @@ -package middleware - -import ( - "net/http" - - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promhttp" -) - -var ( - requestCounter = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Name: "handler_requests_total", - Help: "Total number of request/responses by HTTP status code.", - }, []string{"handler", "code"}) - - requestDuration = prometheus.NewHistogramVec(prometheus.HistogramOpts{ - Name: "handler_request_duration", - Help: "Handler request duration.", - }, []string{"handler", "method"}) - - requestInFlight = prometheus.NewGaugeVec(prometheus.GaugeOpts{ - Name: "handler_requests_in_flight", - Help: "Current number of requests being served.", - }, []string{"handler"}) -) - -func init() { - _ = prometheus.Register(requestCounter) - _ = prometheus.Register(requestDuration) - _ = prometheus.Register(requestInFlight) -} - -// Metrics captures request duration, request count and in-flight request count -// metrics for HTTP handlers. The family field is used to discriminate handlers. -func Metrics(family string, next http.Handler) http.Handler { - return promhttp.InstrumentHandlerDuration( - requestDuration.MustCurryWith(prometheus.Labels{"handler": family}), - promhttp.InstrumentHandlerCounter(requestCounter.MustCurryWith(prometheus.Labels{"handler": family}), - promhttp.InstrumentHandlerInFlight(requestInFlight.With(prometheus.Labels{"handler": family}), next), - ), - ) -} diff --git a/internal/middleware/requestid.go b/internal/middleware/requestid.go deleted file mode 100644 index 6914137..0000000 --- a/internal/middleware/requestid.go +++ /dev/null @@ -1,31 +0,0 @@ -package middleware - -import ( - "net/http" - - "github.com/celrenheit/sandflake" - "within.website/ln" -) - -// RequestID appends a unique (sandflake) request ID to each request's -// X-Request-Id header field, much like Heroku's router does. -func RequestID(next http.Handler) http.Handler { - var g sandflake.Generator - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - id := g.Next().String() - - if rid := r.Header.Get("X-Request-Id"); rid != "" { - id = rid + "," + id - } - - ctx := ln.WithF(r.Context(), ln.F{ - "request_id": id, - }) - r = r.WithContext(ctx) - - w.Header().Set("X-Request-Id", id) - r.Header.Set("X-Request-Id", id) - - next.ServeHTTP(w, r) - }) -} |
