github.com/Azure/aad-pod-identity@v1.8.17/pkg/metrics/prometheus_exporter.go (about) 1 package metrics 2 3 import ( 4 "fmt" 5 "net/http" 6 7 "contrib.go.opencensus.io/exporter/prometheus" 8 "k8s.io/klog/v2" 9 ) 10 11 // newPrometheusExporter creates prometheus exporter and run the same on given port 12 func newPrometheusExporter(namespace string, portNumber string) (*prometheus.Exporter, error) { 13 14 prometheusExporter, err := prometheus.NewExporter(prometheus.Options{ 15 Namespace: namespace, 16 }) 17 18 if err != nil { 19 return nil, fmt.Errorf("failed to create the Prometheus exporter, error: %+v", err) 20 } 21 klog.Info("starting Prometheus exporter") 22 // Run the Prometheus exporter as a scrape endpoint. 23 go func() { 24 mux := http.NewServeMux() 25 mux.Handle("/metrics", prometheusExporter) 26 address := fmt.Sprintf(":%v", portNumber) 27 if err := http.ListenAndServe(address, mux); err != nil { 28 klog.Errorf("failed to run Prometheus scrape endpoint, error: %+v", err) 29 } 30 }() 31 return prometheusExporter, nil 32 }