package metrics import "github.com/prometheus/client_golang/prometheus" const ( serverSubsystem = "server" httpHealthMetric = "health" ) type httpServerMetrics struct { endpointHealth *prometheus.GaugeVec } func newHTTPServerMetrics() *httpServerMetrics { return &httpServerMetrics{ endpointHealth: mustNewGaugeVec(appMetricsDesc[serverSubsystem][httpHealthMetric]), } } func (m *httpServerMetrics) Collect(ch chan<- prometheus.Metric) { m.endpointHealth.Collect(ch) } func (m *httpServerMetrics) Describe(desc chan<- *prometheus.Desc) { m.endpointHealth.Describe(desc) } func (m *httpServerMetrics) MarkHealthy(endpoint string) { m.endpointHealth.WithLabelValues(endpoint).Set(float64(1)) } func (m *httpServerMetrics) MarkUnhealthy(endpoint string) { m.endpointHealth.WithLabelValues(endpoint).Set(float64(0)) }