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  }