38 lines
933 B
Go
38 lines
933 B
Go
package metrics
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
"github.com/prometheus/client_golang/prometheus/collectors"
|
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
|
|
|
"openreplay/backend/pkg/logger"
|
|
)
|
|
|
|
type MetricServer struct {
|
|
registry *prometheus.Registry
|
|
}
|
|
|
|
func New(log logger.Logger, cs []prometheus.Collector) {
|
|
registry := prometheus.NewRegistry()
|
|
// Add go runtime metrics and process collectors.
|
|
registry.MustRegister(
|
|
collectors.NewGoCollector(),
|
|
collectors.NewProcessCollector(collectors.ProcessCollectorOpts{}),
|
|
)
|
|
// Add extra metrics
|
|
registry.MustRegister(cs...)
|
|
// Expose /metrics HTTP endpoint using the created custom registry.
|
|
http.Handle(
|
|
"/metrics", promhttp.HandlerFor(
|
|
registry,
|
|
promhttp.HandlerOpts{
|
|
EnableOpenMetrics: true,
|
|
}),
|
|
)
|
|
go func() {
|
|
log.Error(context.Background(), "%v", http.ListenAndServe(":8888", nil))
|
|
}()
|
|
}
|