forked from TrueCloudLab/frostfs-s3-gw
[#680] Use gauge instead of counter for metrics
Signed-off-by: Denis Kirillov <denis@nspcc.ru>
This commit is contained in:
parent
a217871334
commit
628c0f42fe
1 changed files with 14 additions and 12 deletions
|
@ -47,9 +47,9 @@ type stateMetrics struct {
|
||||||
|
|
||||||
type poolMetricsCollector struct {
|
type poolMetricsCollector struct {
|
||||||
poolStatScraper StatisticScraper
|
poolStatScraper StatisticScraper
|
||||||
overallErrors prometheus.Counter
|
overallErrors prometheus.Gauge
|
||||||
overallNodeErrors *prometheus.CounterVec
|
overallNodeErrors *prometheus.GaugeVec
|
||||||
overallNodeRequests *prometheus.CounterVec
|
overallNodeRequests *prometheus.GaugeVec
|
||||||
currentErrors *prometheus.GaugeVec
|
currentErrors *prometheus.GaugeVec
|
||||||
requestDuration *prometheus.GaugeVec
|
requestDuration *prometheus.GaugeVec
|
||||||
}
|
}
|
||||||
|
@ -87,8 +87,8 @@ func (m stateMetrics) SetHealth(s int32) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func newPoolMetricsCollector(scraper StatisticScraper) *poolMetricsCollector {
|
func newPoolMetricsCollector(scraper StatisticScraper) *poolMetricsCollector {
|
||||||
overallErrors := prometheus.NewCounter(
|
overallErrors := prometheus.NewGauge(
|
||||||
prometheus.CounterOpts{
|
prometheus.GaugeOpts{
|
||||||
Namespace: namespace,
|
Namespace: namespace,
|
||||||
Subsystem: poolSubsystem,
|
Subsystem: poolSubsystem,
|
||||||
Name: "overall_errors",
|
Name: "overall_errors",
|
||||||
|
@ -96,8 +96,8 @@ func newPoolMetricsCollector(scraper StatisticScraper) *poolMetricsCollector {
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
overallNodeErrors := prometheus.NewCounterVec(
|
overallNodeErrors := prometheus.NewGaugeVec(
|
||||||
prometheus.CounterOpts{
|
prometheus.GaugeOpts{
|
||||||
Namespace: namespace,
|
Namespace: namespace,
|
||||||
Subsystem: poolSubsystem,
|
Subsystem: poolSubsystem,
|
||||||
Name: "overall_node_errors",
|
Name: "overall_node_errors",
|
||||||
|
@ -108,8 +108,8 @@ func newPoolMetricsCollector(scraper StatisticScraper) *poolMetricsCollector {
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
overallNodeRequests := prometheus.NewCounterVec(
|
overallNodeRequests := prometheus.NewGaugeVec(
|
||||||
prometheus.CounterOpts{
|
prometheus.GaugeOpts{
|
||||||
Namespace: namespace,
|
Namespace: namespace,
|
||||||
Subsystem: poolSubsystem,
|
Subsystem: poolSubsystem,
|
||||||
Name: "overall_node_requests",
|
Name: "overall_node_requests",
|
||||||
|
@ -179,18 +179,20 @@ func (m *poolMetricsCollector) register() {
|
||||||
func (m *poolMetricsCollector) updateStatistic() {
|
func (m *poolMetricsCollector) updateStatistic() {
|
||||||
stat := m.poolStatScraper.Statistic()
|
stat := m.poolStatScraper.Statistic()
|
||||||
|
|
||||||
|
m.overallNodeErrors.Reset()
|
||||||
|
m.overallNodeRequests.Reset()
|
||||||
m.currentErrors.Reset()
|
m.currentErrors.Reset()
|
||||||
m.requestDuration.Reset()
|
m.requestDuration.Reset()
|
||||||
|
|
||||||
for _, node := range stat.Nodes() {
|
for _, node := range stat.Nodes() {
|
||||||
m.overallNodeErrors.WithLabelValues(node.Address()).Add(float64(node.OverallErrors()))
|
m.overallNodeErrors.WithLabelValues(node.Address()).Set(float64(node.OverallErrors()))
|
||||||
m.overallNodeRequests.WithLabelValues(node.Address()).Add(float64(node.Requests()))
|
m.overallNodeRequests.WithLabelValues(node.Address()).Set(float64(node.Requests()))
|
||||||
|
|
||||||
m.currentErrors.WithLabelValues(node.Address()).Set(float64(node.CurrentErrors()))
|
m.currentErrors.WithLabelValues(node.Address()).Set(float64(node.CurrentErrors()))
|
||||||
m.updateRequestsDuration(node)
|
m.updateRequestsDuration(node)
|
||||||
}
|
}
|
||||||
|
|
||||||
m.overallErrors.Add(float64(stat.OverallErrors()))
|
m.overallErrors.Set(float64(stat.OverallErrors()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *poolMetricsCollector) updateRequestsDuration(node pool.NodeStatistic) {
|
func (m *poolMetricsCollector) updateRequestsDuration(node pool.NodeStatistic) {
|
||||||
|
|
Loading…
Reference in a new issue