Nereus/apps/api/metrics.go

23 lines
1.2 KiB
Go

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
}