Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 

29 wiersze
638 B

  1. package metrics
  2. import (
  3. "strconv"
  4. "time"
  5. "github.com/gin-gonic/gin"
  6. )
  7. // MetricsMiddleware 是一个 Gin 中间件,采集活跃请求数、请求延迟和状态码。
  8. func MetricsMiddleware(m *Metrics) gin.HandlerFunc {
  9. return func(c *gin.Context) {
  10. start := time.Now()
  11. m.ActiveRequests.WithLabelValues("").Inc()
  12. defer func() {
  13. m.ActiveRequests.WithLabelValues("").Dec()
  14. elapsed := time.Since(start).Seconds()
  15. status := strconv.Itoa(c.Writer.Status())
  16. m.RequestsTotal.WithLabelValues("", "", status, "", "").Inc()
  17. m.RequestDuration.WithLabelValues("", "", "", "").Observe(elapsed)
  18. }()
  19. c.Next()
  20. }
  21. }