29 lines
566 B
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()))
|
|
|
|
}
|
|
}
|