mirror of
https://github.com/OliveTin/OliveTin
synced 2026-08-26 12:36:30 +00:00
44 lines
1010 B
Go
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")
|
|
}
|
|
}
|