pkg/metrics/prometheus_exporter.go (29 lines of code) (raw):

package metrics import ( "fmt" "net/http" "time" "go.opentelemetry.io/otel/exporters/metric/prometheus" "k8s.io/klog/v2" ) const ( readHeaderTimeout = 5 * time.Second ) func initPrometheusExporter(port int) error { pusher, err := prometheus.InstallNewPipeline(prometheus.Config{ DefaultHistogramBoundaries: []float64{ 0.1, 0.2, 0.3, 0.4, 0.5, 1, 1.5, 2, 2.5, 3.0, 5.0, 10.0, 15.0, 30.0, }}) if err != nil { return err } http.HandleFunc("/metrics", pusher.ServeHTTP) go func() { server := &http.Server{ Addr: fmt.Sprintf(":%v", port), ReadHeaderTimeout: readHeaderTimeout, } klog.ErrorS(server.ListenAndServe(), "listen and server error") }() return err }