mycommon/myhttp/httpsr/middleware.go

29 lines
566 B
Go

package httpsr
import (
"git.makemake.in/kzkzzzz/mycommon/mymetric"
"github.com/gin-gonic/gin"
"github.com/prometheus/client_golang/prometheus"
"time"
)
func QPSCollect(svcName string) gin.HandlerFunc {
hs := mymetric.NewQPSHistogram(svcName, []string{
"svc", "method", "route", "from",
}...)
return func(ctx *gin.Context) {
st := time.Now()
ctx.Next()
hs.With(prometheus.Labels{
"svc": svcName,
"method": ctx.Request.Method,
"route": ctx.Request.URL.Path,
"from": "",
}).Observe(float64(time.Since(st).Milliseconds()))
}
}