package metrics import "github.com/prometheus/client_golang/prometheus" const stateSubsystem = "state" // HealthStatus of the gate application. type HealthStatus int32 const ( HealthStatusUndefined HealthStatus = 0 HealthStatusStarting HealthStatus = 1 HealthStatusReady HealthStatus = 2 HealthStatusShuttingDown HealthStatus = 3 ) type stateMetrics struct { healthCheck prometheus.Gauge } func newStateMetrics() *stateMetrics { return &stateMetrics{ healthCheck: prometheus.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: stateSubsystem, Name: "health", Help: "Current S3 gateway state", }), } } func (m stateMetrics) register() { prometheus.MustRegister(m.healthCheck) } func (m stateMetrics) unregister() { prometheus.Unregister(m.healthCheck) } func (m stateMetrics) SetHealth(s HealthStatus) { m.healthCheck.Set(float64(s)) }