修改后的代码如下:
func NewPrometheusService(addr string) error {
logger.Logger.Info("开始监听:" + addr)
router := NewRouter()
// Setup /metric Server
prometheusService := &http.Server{
Addr: addr,
Handler: h2c.NewHandler(router, new(http2.Server)),
TLSNextProto: make(map[string]func(*http.Server, *tls.Conn, http.Handler)),
}
http.Handle("/metrics", promhttp.Handler())
err := prometheusService.ListenAndServe()
if err != nil {
logger.Logger.Error(err.Error() + "," + addr)
return err
}
return nil
}
在这个修改后的代码中,将prometheusService.Handler("/metrics", promhttp.Handler())
修改为了 http.Handle("/metrics", promhttp.Handler())
,并且使用 prometheusService.ListenAndServe()
启动了服务。这样就能够正确地将”/metrics”路径与Prometheus监控数据关联,并启动Prometheus服务进行监听。同时,在发生错误时会将错误信息记录到日志并返回该错误。
内容由零声教学AI助手提供,问题来源于学员提问