mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
cleanup.
This commit is contained in:
parent
8f83089c8e
commit
bf47e5a8d0
@ -1,57 +0,0 @@
|
|||||||
package http
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/go-chi/chi/middleware"
|
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Middleware is a handler that exposes prometheus metrics for the number of requests,
|
|
||||||
// the latency and the response size, partitioned by status code, method and HTTP path.
|
|
||||||
type metrics struct {
|
|
||||||
reqs *prometheus.CounterVec
|
|
||||||
latency *prometheus.HistogramVec
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewMiddleware returns a new prometheus Middleware handler.
|
|
||||||
func middlewareMetrics(next http.Handler) http.Handler {
|
|
||||||
var m metrics
|
|
||||||
|
|
||||||
m.reqs = prometheus.NewCounterVec(
|
|
||||||
prometheus.CounterOpts{
|
|
||||||
Name: "requests_total",
|
|
||||||
Namespace: "neko",
|
|
||||||
Subsystem: "http",
|
|
||||||
Help: "How many HTTP requests processed, partitioned by status code, method and HTTP path.",
|
|
||||||
},
|
|
||||||
[]string{"code", "method", "path"},
|
|
||||||
)
|
|
||||||
prometheus.MustRegister(m.reqs)
|
|
||||||
|
|
||||||
m.latency = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
|
||||||
Name: "request_duration_milliseconds",
|
|
||||||
Namespace: "neko",
|
|
||||||
Subsystem: "http",
|
|
||||||
Help: "How long it took to process the request, partitioned by status code, method and HTTP path.",
|
|
||||||
Buckets: []float64{300, 1200, 5000},
|
|
||||||
},
|
|
||||||
[]string{"code", "method", "path"},
|
|
||||||
)
|
|
||||||
|
|
||||||
prometheus.MustRegister(m.latency)
|
|
||||||
return m.handler(next)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c metrics) handler(next http.Handler) http.Handler {
|
|
||||||
fn := func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
start := time.Now()
|
|
||||||
ww := middleware.NewWrapResponseWriter(w, r.ProtoMajor)
|
|
||||||
next.ServeHTTP(ww, r)
|
|
||||||
c.reqs.WithLabelValues(http.StatusText(ww.Status()), r.Method, r.URL.Path).Inc()
|
|
||||||
c.latency.WithLabelValues(http.StatusText(ww.Status()), r.Method, r.URL.Path).Observe(float64(time.Since(start).Nanoseconds()) / 1000000)
|
|
||||||
}
|
|
||||||
|
|
||||||
return http.HandlerFunc(fn)
|
|
||||||
}
|
|
@ -20,7 +20,6 @@ func newRouter(logger zerolog.Logger) *router {
|
|||||||
r := chi.NewRouter()
|
r := chi.NewRouter()
|
||||||
r.Use(middleware.RequestID) // Create a request ID for each request
|
r.Use(middleware.RequestID) // Create a request ID for each request
|
||||||
r.Use(middleware.RequestLogger(&logFormatter{logger}))
|
r.Use(middleware.RequestLogger(&logFormatter{logger}))
|
||||||
r.Use(middlewareMetrics)
|
|
||||||
r.Use(middleware.Recoverer) // Recover from panics without crashing server
|
r.Use(middleware.Recoverer) // Recover from panics without crashing server
|
||||||
return &router{r}
|
return &router{r}
|
||||||
}
|
}
|
||||||
|
@ -248,10 +248,10 @@ func (m *metricsCtx) SetVideoID(session types.Session, videoId string) {
|
|||||||
|
|
||||||
if _, found := met.videoIds[videoId]; !found {
|
if _, found := met.videoIds[videoId]; !found {
|
||||||
met.videoIds[videoId] = promauto.NewGauge(prometheus.GaugeOpts{
|
met.videoIds[videoId] = promauto.NewGauge(prometheus.GaugeOpts{
|
||||||
Name: "video_id",
|
Name: "video_listeners",
|
||||||
Namespace: "neko",
|
Namespace: "neko",
|
||||||
Subsystem: "webrtc",
|
Subsystem: "webrtc",
|
||||||
Help: "Current Video ID of a session.",
|
Help: "Listeners for Video pipelines by a session.",
|
||||||
ConstLabels: map[string]string{
|
ConstLabels: map[string]string{
|
||||||
"session_id": session.ID(),
|
"session_id": session.ID(),
|
||||||
"video_id": videoId,
|
"video_id": videoId,
|
||||||
|
Loading…
Reference in New Issue
Block a user