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