prometheus: add middleware function
Add middleware function to track request count and measure the latency of compose requests.
This commit is contained in:
parent
dfa6a48f5d
commit
f8199ec41d
3 changed files with 22 additions and 23 deletions
|
|
@ -58,8 +58,7 @@ func (server *Server) Handler(path string) http.Handler {
|
|||
handler := apiHandlers{
|
||||
server: server,
|
||||
}
|
||||
RegisterHandlers(e.Group(path, server.IncRequests), &handler)
|
||||
|
||||
RegisterHandlers(e.Group(path, prometheus.MetricsMiddleware), &handler)
|
||||
return e
|
||||
}
|
||||
|
||||
|
|
@ -76,16 +75,6 @@ func (b binder) Bind(i interface{}, ctx echo.Context) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *Server) IncRequests(next echo.HandlerFunc) echo.HandlerFunc {
|
||||
return func(c echo.Context) error {
|
||||
prometheus.TotalRequests.Inc()
|
||||
if strings.HasSuffix(c.Path(), "/compose") {
|
||||
prometheus.ComposeRequests.Inc()
|
||||
}
|
||||
return next(c)
|
||||
}
|
||||
}
|
||||
|
||||
// Compose handles a new /compose POST request
|
||||
func (h *apiHandlers) Compose(ctx echo.Context) error {
|
||||
contentType := ctx.Request().Header["Content-Type"]
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ func (server *Server) Handler(path string) http.Handler {
|
|||
handler := apiHandlers{
|
||||
server: server,
|
||||
}
|
||||
RegisterHandlers(e.Group(path, server.IncRequests), &handler)
|
||||
RegisterHandlers(e.Group(path, prometheus.MetricsMiddleware), &handler)
|
||||
|
||||
return e
|
||||
}
|
||||
|
|
@ -82,16 +82,6 @@ func (b binder) Bind(i interface{}, ctx echo.Context) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *Server) IncRequests(next echo.HandlerFunc) echo.HandlerFunc {
|
||||
return func(c echo.Context) error {
|
||||
prometheus.TotalRequests.Inc()
|
||||
if strings.HasSuffix(c.Path(), "/compose") {
|
||||
prometheus.ComposeRequests.Inc()
|
||||
}
|
||||
return next(c)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *apiHandlers) GetOpenapi(ctx echo.Context) error {
|
||||
spec, err := GetSwagger()
|
||||
if err != nil {
|
||||
|
|
|
|||
20
internal/prometheus/middleware.go
Normal file
20
internal/prometheus/middleware.go
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
package prometheus
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
)
|
||||
|
||||
func MetricsMiddleware(next echo.HandlerFunc) echo.HandlerFunc {
|
||||
return func(ctx echo.Context) error {
|
||||
TotalRequests.Inc()
|
||||
if strings.HasSuffix(ctx.Path(), "/compose") {
|
||||
ComposeRequests.Inc()
|
||||
}
|
||||
timer := prometheus.NewTimer(httpDuration.WithLabelValues(ctx.Path()))
|
||||
defer timer.ObserveDuration()
|
||||
return next(ctx)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue