package main import "github.com/prometheus/client_golang/prometheus" type metrics struct { requests *prometheus.CounterVec duration *prometheus.HistogramVec db *prometheus.HistogramVec ingested prometheus.Counter active prometheus.Gauge } func newMetrics(reg prometheus.Registerer) *metrics { m := &metrics{ requests: prometheus.NewCounterVec(prometheus.CounterOpts{Name: "nereus_http_requests_total", Help: "HTTP requests processed."}, []string{"method", "path", "status", "version"}), duration: prometheus.NewHistogramVec(prometheus.HistogramOpts{Name: "nereus_http_request_duration_seconds", Help: "HTTP request duration."}, []string{"method", "path", "version"}), db: prometheus.NewHistogramVec(prometheus.HistogramOpts{Name: "nereus_db_query_duration_seconds", Help: "Database query duration."}, []string{"operation"}), ingested: prometheus.NewCounter(prometheus.CounterOpts{Name: "nereus_readings_ingested_total", Help: "Readings successfully ingested."}), active: prometheus.NewGauge(prometheus.GaugeOpts{Name: "nereus_buoys_active", Help: "Current number of buoys."}), } reg.MustRegister(m.requests, m.duration, m.db, m.ingested, m.active) return m }