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 | |
| } | |
| } | |