package observability import ( "net/http" ) // MetricsHandler serves Prometheus metrics type MetricsHandler struct { exporter *PrometheusExporter } // NewMetricsHandler creates a new metrics handler func NewMetricsHandler(m *Metrics) *MetricsHandler { return &MetricsHandler{ exporter: NewPrometheusExporter(m), } } // ServeHTTP implements http.Handler for Prometheus /metrics endpoint func (h *MetricsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/plain; version=0.0.4; charset=utf-8") w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") w.Header().Set("Pragma", "no-cache") w.Header().Set("Expires", "0") w.WriteHeader(http.StatusOK) w.Write([]byte(h.exporter.Export())) }