[#32] Update health metric values #33
3 changed files with 18 additions and 11 deletions
|
@ -14,6 +14,7 @@ This document outlines major changes between releases.
|
||||||
- Errors have become more detailed (#18)
|
- Errors have become more detailed (#18)
|
||||||
- Update system attribute names (#22)
|
- Update system attribute names (#22)
|
||||||
- Separate integration tests with build tags (#24)
|
- Separate integration tests with build tags (#24)
|
||||||
|
- Changed values for `frostfs_http_gw_state_health` metric (#32)
|
||||||
|
|
||||||
### Updating from v0.26.0
|
### Updating from v0.26.0
|
||||||
|
|
||||||
|
|
16
app.go
16
app.go
|
@ -62,15 +62,10 @@ type (
|
||||||
|
|
||||||
gateMetrics struct {
|
gateMetrics struct {
|
||||||
logger *zap.Logger
|
logger *zap.Logger
|
||||||
provider GateMetricsProvider
|
provider *metrics.GateMetrics
|
||||||
mu sync.RWMutex
|
mu sync.RWMutex
|
||||||
enabled bool
|
enabled bool
|
||||||
}
|
}
|
||||||
|
|
||||||
GateMetricsProvider interface {
|
|
||||||
SetHealth(int32)
|
|
||||||
Unregister()
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// WithLogger returns Option to set a specific logger.
|
// WithLogger returns Option to set a specific logger.
|
||||||
|
@ -214,9 +209,10 @@ func (a *app) getResolverConfig() ([]string, *resolver.Config) {
|
||||||
func (a *app) initMetrics() {
|
func (a *app) initMetrics() {
|
||||||
gateMetricsProvider := metrics.NewGateMetrics(a.pool)
|
gateMetricsProvider := metrics.NewGateMetrics(a.pool)
|
||||||
a.metrics = newGateMetrics(a.log, gateMetricsProvider, a.cfg.GetBool(cfgPrometheusEnabled))
|
a.metrics = newGateMetrics(a.log, gateMetricsProvider, a.cfg.GetBool(cfgPrometheusEnabled))
|
||||||
|
a.metrics.SetHealth(metrics.HealthStatusStarting)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newGateMetrics(logger *zap.Logger, provider GateMetricsProvider, enabled bool) *gateMetrics {
|
func newGateMetrics(logger *zap.Logger, provider *metrics.GateMetrics, enabled bool) *gateMetrics {
|
||||||
if !enabled {
|
if !enabled {
|
||||||
logger.Warn("metrics are disabled")
|
logger.Warn("metrics are disabled")
|
||||||
}
|
}
|
||||||
|
@ -236,7 +232,7 @@ func (m *gateMetrics) SetEnabled(enabled bool) {
|
||||||
m.mu.Unlock()
|
m.mu.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *gateMetrics) SetHealth(status int32) {
|
func (m *gateMetrics) SetHealth(status metrics.HealthStatus) {
|
||||||
m.mu.RLock()
|
m.mu.RLock()
|
||||||
if !m.enabled {
|
if !m.enabled {
|
||||||
m.mu.RUnlock()
|
m.mu.RUnlock()
|
||||||
|
@ -250,7 +246,7 @@ func (m *gateMetrics) SetHealth(status int32) {
|
||||||
func (m *gateMetrics) Shutdown() {
|
func (m *gateMetrics) Shutdown() {
|
||||||
m.mu.Lock()
|
m.mu.Lock()
|
||||||
if m.enabled {
|
if m.enabled {
|
||||||
m.provider.SetHealth(0)
|
m.provider.SetHealth(metrics.HealthStatusShuttingDown)
|
||||||
m.enabled = false
|
m.enabled = false
|
||||||
}
|
}
|
||||||
m.provider.Unregister()
|
m.provider.Unregister()
|
||||||
|
@ -335,7 +331,7 @@ func (a *app) Wait() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *app) setHealthStatus() {
|
func (a *app) setHealthStatus() {
|
||||||
a.metrics.SetHealth(1)
|
a.metrics.SetHealth(metrics.HealthStatusReady)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *app) Serve(ctx context.Context) {
|
func (a *app) Serve(ctx context.Context) {
|
||||||
|
|
|
@ -31,6 +31,16 @@ const (
|
||||||
methodCreateSession = "create_session"
|
methodCreateSession = "create_session"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// HealthStatus of the gate application.
|
||||||
|
type HealthStatus int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
HealthStatusUndefined HealthStatus = 0
|
||||||
|
HealthStatusStarting HealthStatus = 1
|
||||||
|
HealthStatusReady HealthStatus = 2
|
||||||
|
HealthStatusShuttingDown HealthStatus = 3
|
||||||
|
)
|
||||||
|
|
||||||
type GateMetrics struct {
|
type GateMetrics struct {
|
||||||
stateMetrics
|
stateMetrics
|
||||||
poolMetricsCollector
|
poolMetricsCollector
|
||||||
|
@ -87,7 +97,7 @@ func (m stateMetrics) unregister() {
|
||||||
prometheus.Unregister(m.healthCheck)
|
prometheus.Unregister(m.healthCheck)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m stateMetrics) SetHealth(s int32) {
|
func (m stateMetrics) SetHealth(s HealthStatus) {
|
||||||
m.healthCheck.Set(float64(s))
|
m.healthCheck.Set(float64(s))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue