Like Prometheus, but for logs.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
loki/pkg/querier/stats/time_middleware.go

30 lines
649 B

package stats
import (
"net/http"
"time"
)
// WallTimeMiddleware tracks the wall time.
type WallTimeMiddleware struct{}
// NewWallTimeMiddleware makes a new WallTimeMiddleware.
func NewWallTimeMiddleware() WallTimeMiddleware {
return WallTimeMiddleware{}
}
// Wrap implements middleware.Interface.
func (m WallTimeMiddleware) Wrap(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if !IsEnabled(r.Context()) {
next.ServeHTTP(w, r)
return
}
startTime := time.Now()
next.ServeHTTP(w, r)
stats := FromContext(r.Context())
stats.AddWallTime(time.Since(startTime))
})
}