package monitoring
import (
"net/http"
"sync"
"google.golang.org/grpc"
"github.com/grpc-ecosystem/go-grpc-prometheus"
"github.com/lightningnetwork/lnd/lncfg"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
var started sync.Once
func GetPromInterceptors() ([]grpc.UnaryServerInterceptor, []grpc.StreamServerInterceptor) {
unaryInterceptors := []grpc.UnaryServerInterceptor{
grpc_prometheus.UnaryServerInterceptor,
}
streamInterceptors := []grpc.StreamServerInterceptor{
grpc_prometheus.StreamServerInterceptor,
}
return unaryInterceptors, streamInterceptors
}
func ExportPrometheusMetrics(grpcServer *grpc.Server, cfg lncfg.Prometheus) error {
started.Do(func() {
log.Infof("Prometheus exporter started on %v/metrics", cfg.Listen)
grpc_prometheus.Register(grpcServer)
http.Handle("/metrics", promhttp.Handler())
go func() {
http.ListenAndServe(cfg.Listen, nil)
}()
})
return nil
}