in app.go [359:388]
func (a *theApp) listenMetrics(eg *errgroup.Group, config cfg.Metrics) *http.Server {
server := newHTTPServer(a)
eg.Go(func() error {
l, err := net.Listen("tcp", config.Address)
if err != nil {
errortracking.CaptureErrWithStackTrace(err, errortracking.WithField("listener", "metrics"))
return fmt.Errorf("failed to listen on addr %s: %w", config.Address, err)
}
if config.TLSConfig != nil {
l = cryptotls.NewListener(l, config.TLSConfig)
}
monitoringOpts := []monitoring.Option{
monitoring.WithBuildInformation(VERSION, ""),
monitoring.WithListener(l),
monitoring.WithServer(server),
}
err = monitoring.Start(monitoringOpts...)
if err != nil && !errors.Is(err, http.ErrServerClosed) {
errortracking.CaptureErrWithStackTrace(err, errortracking.WithField("listener", "metrics"))
return err
}
return nil
})
return server
}