Невозможно передать промежуточное ПО 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))
}
Моя проблема в том, что я не могу передать свой дескриптор прометея этой функции конечной точки httprouter в качестве параметра
Вот что я хочу сделать:
func InstrumentHandlerFunc(name string, handler httprouter.Handle) httprouter.Handel {
}
router.Get("/hello", InstrumentHandlerFunc("/hello", r.Hello))