Files

44 lines
1010 B
Go

package httpservers
import (
"net/http"
"time"
config "github.com/OliveTin/OliveTin/internal/config"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/collectors"
"github.com/prometheus/client_golang/prometheus/promhttp"
log "github.com/sirupsen/logrus"
)
func StartPrometheus(cfg *config.Config) {
if !cfg.Prometheus.Enabled {
return
}
if !cfg.Prometheus.DefaultGoMetrics {
prometheus.Unregister(collectors.NewGoCollector())
}
mux := http.NewServeMux()
mux.Handle("/", promhttp.Handler())
srv := &http.Server{
Addr: cfg.ListenAddressPrometheus,
Handler: mux,
ReadHeaderTimeout: 10 * time.Second,
ReadTimeout: 30 * time.Second,
WriteTimeout: 30 * time.Second,
IdleTimeout: 120 * time.Second,
}
err := srv.ListenAndServe()
if err != nil {
log.WithFields(log.Fields{
"address": cfg.ListenAddressPrometheus,
"error": err,
}).Warnf("Failed to start Prometheus server")
}
}