prometheus.go 1010 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package httpservers
  2. import (
  3. "net/http"
  4. "time"
  5. config "github.com/OliveTin/OliveTin/internal/config"
  6. "github.com/prometheus/client_golang/prometheus"
  7. "github.com/prometheus/client_golang/prometheus/collectors"
  8. "github.com/prometheus/client_golang/prometheus/promhttp"
  9. log "github.com/sirupsen/logrus"
  10. )
  11. func StartPrometheus(cfg *config.Config) {
  12. if !cfg.Prometheus.Enabled {
  13. return
  14. }
  15. if !cfg.Prometheus.DefaultGoMetrics {
  16. prometheus.Unregister(collectors.NewGoCollector())
  17. }
  18. mux := http.NewServeMux()
  19. mux.Handle("/", promhttp.Handler())
  20. srv := &http.Server{
  21. Addr: cfg.ListenAddressPrometheus,
  22. Handler: mux,
  23. ReadHeaderTimeout: 10 * time.Second,
  24. ReadTimeout: 30 * time.Second,
  25. WriteTimeout: 30 * time.Second,
  26. IdleTimeout: 120 * time.Second,
  27. }
  28. err := srv.ListenAndServe()
  29. if err != nil {
  30. log.WithFields(log.Fields{
  31. "address": cfg.ListenAddressPrometheus,
  32. "error": err,
  33. }).Warnf("Failed to start Prometheus server")
  34. }
  35. }