Spaces:
Configuration error
Configuration error
package localai | |
import ( | |
"time" | |
"github.com/gofiber/fiber/v2" | |
"github.com/gofiber/fiber/v2/middleware/adaptor" | |
"github.com/mudler/LocalAI/core/services" | |
"github.com/prometheus/client_golang/prometheus/promhttp" | |
) | |
// LocalAIMetricsEndpoint returns the metrics endpoint for LocalAI | |
// @Summary Prometheus metrics endpoint | |
// @Param request body config.Gallery true "Gallery details" | |
// @Router /metrics [get] | |
func LocalAIMetricsEndpoint() fiber.Handler { | |
return adaptor.HTTPHandler(promhttp.Handler()) | |
} | |
type apiMiddlewareConfig struct { | |
Filter func(c *fiber.Ctx) bool | |
metricsService *services.LocalAIMetricsService | |
} | |
func LocalAIMetricsAPIMiddleware(metrics *services.LocalAIMetricsService) fiber.Handler { | |
cfg := apiMiddlewareConfig{ | |
metricsService: metrics, | |
Filter: func(c *fiber.Ctx) bool { | |
return c.Path() == "/metrics" | |
}, | |
} | |
return func(c *fiber.Ctx) error { | |
if cfg.Filter != nil && cfg.Filter(c) { | |
return c.Next() | |
} | |
path := c.Path() | |
method := c.Method() | |
start := time.Now() | |
err := c.Next() | |
elapsed := float64(time.Since(start)) / float64(time.Second) | |
cfg.metricsService.ObserveAPICall(method, path, elapsed) | |
return err | |
} | |
} | |