github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/services/metrics/prometheus.go (about) 1 package metrics 2 3 import ( 4 "net/http" 5 6 "github.com/nspcc-dev/neo-go/pkg/config" 7 "github.com/prometheus/client_golang/prometheus/promhttp" 8 "go.uber.org/zap" 9 ) 10 11 // PrometheusService https://prometheus.io/docs/guides/go-application. 12 type PrometheusService Service 13 14 // NewPrometheusService creates a new service for gathering prometheus metrics. 15 func NewPrometheusService(cfg config.BasicService, log *zap.Logger) *Service { 16 if log == nil { 17 return nil 18 } 19 20 addrs := cfg.Addresses 21 srvs := make([]*http.Server, len(addrs)) 22 for i, addr := range addrs { 23 srvs[i] = &http.Server{ 24 Addr: addr, 25 Handler: promhttp.Handler(), // share metrics between multiple prometheus handlers 26 } 27 } 28 return NewService("Prometheus", srvs, cfg, log) 29 }