如何将httprouter.Handle传递给Prometheus http.HandleFunc

时间:2019-04-18 00:03:40

标签: go prometheus httprouter

无法将Prometheus中间件传递到httprouter端点定义中。

我正在尝试将Prometheus中间件添加到我们的端点实现中。但是我们的端点正在使用名为mux的第三方httprouter软件包。然后,当我尝试将此中间件添加到现有代码库中时,我找不到将两者集成在一起的好方法。


router := httprouter.New()
router.GET("/hello", r.Hello)

func (r configuration) Hello(w http.ResponseWriter, req *http.Request, ps httprouter.Params)

func InstrumentHandlerFunc(name string, handler http.HandlerFunc) http.HandlerFunc {
    counter := prometheus.NewCounterVec(
        do something...
    )

    duration := prometheus.NewHistogramVec(
        do something...
    )
    return promhttp.InstrumentHandlerDuration(duration,
        promhttp.InstrumentHandlerCounter(counter, handler))
}

我的问题是我无法将Prometheus句柄作为参数传递给该httprouter端点函数

以下是我想做的事情:


func InstrumentHandlerFunc(name string, handler httprouter.Handle) httprouter.Handel {

}

router.Get("/hello", InstrumentHandlerFunc("/hello", r.Hello))

1 个答案:

答案 0 :(得分:0)

如果您想在同一个项目中同时使用它们,则可以通过一种简单的方法来收听不同的<div id="wprm-recipe-container-26156" class="wprm-recipe-container" data-recipe-id="26156">

来获得相同的结果。
ports