package metrics import ( "strconv" "time" "github.com/gin-gonic/gin" ) // MetricsMiddleware 是一个 Gin 中间件,采集活跃请求数、请求延迟和状态码。 func MetricsMiddleware(m *Metrics) gin.HandlerFunc { return func(c *gin.Context) { start := time.Now() m.ActiveRequests.WithLabelValues("").Inc() defer func() { m.ActiveRequests.WithLabelValues("").Dec() elapsed := time.Since(start).Seconds() status := strconv.Itoa(c.Writer.Status()) m.RequestsTotal.WithLabelValues("", "", status, "", "").Inc() m.RequestDuration.WithLabelValues("", "", "", "").Observe(elapsed) }() c.Next() } }