简体   繁体   中英

Gin send metrics to promethesus where the URL has a parameter in the path

I have a gin service where one of the endpoint looks like this:

const myPath= "/upload-some-file/:uuid"

In my middleware that sends data to prometheus, I have something like this:

requestCounter = promauto.NewCounterVec(prometheus.CounterOpts{
    Name: "all-http-requests",
    Help: "Total number of http requests",
}, []string{"Method", "Endpoint"})

func Telemetry() gin.HandlerFunc {
    return func(c *gin.Context) {
        // Metrics for requests volume
        requestCounter.With(prometheus.Labels{"Method": c.Request.Method, "Endpoint": c.Request.URL.Path}).Inc()

        c.Next()
    }
}

But I notice that that prometheus is unable to figure out that a parameter is actually embedded into the path, therefore it treats every unique uuid as a new path.

Is there some way to let prometheus realize that it is actually using a URL with embedded parameters?

I found this https://github.com/gin-gonic/gin/issues/748#issuecomment-543683781

So I can simply do c.FullPath() to get the matched route.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM