mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-29 18:36:30 +02:00
- import path comments are obsoleted by the go.mod file's module statement Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
39 lines
1,018 B
Go
39 lines
1,018 B
Go
package metrics
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
|
|
ocprom "contrib.go.opencensus.io/exporter/prometheus"
|
|
prom "github.com/prometheus/client_golang/prometheus"
|
|
"go.opencensus.io/stats/view"
|
|
)
|
|
|
|
// PrometheusHandler creates an exporter that exports stats to Prometheus
|
|
// and returns a handler suitable for exporting metrics.
|
|
func PrometheusHandler() (http.Handler, error) {
|
|
if err := registerDefaultViews(); err != nil {
|
|
return nil, fmt.Errorf("telemetry/metrics: failed registering views")
|
|
}
|
|
reg := prom.DefaultRegisterer.(*prom.Registry)
|
|
exporter, err := ocprom.NewExporter(
|
|
ocprom.Options{
|
|
Namespace: "pomerium",
|
|
Registry: reg,
|
|
})
|
|
if err != nil {
|
|
return nil, fmt.Errorf("telemetry/metrics: prometheus exporter: %w", err)
|
|
}
|
|
view.RegisterExporter(exporter)
|
|
mux := http.NewServeMux()
|
|
mux.Handle("/metrics", exporter)
|
|
return mux, nil
|
|
}
|
|
|
|
func registerDefaultViews() error {
|
|
var views []*view.View
|
|
for _, v := range DefaultViews {
|
|
views = append(views, v...)
|
|
}
|
|
return view.Register(views...)
|
|
}
|