Extract metrics reporter from Server

This commit is contained in:
Daniel Oliveira
2021-01-18 22:10:12 +01:00
parent 1e88d904fe
commit cc3073ed05
2 changed files with 73 additions and 32 deletions

View File

@ -0,0 +1,60 @@
package metrics
import (
"github.com/criticalstack/quake-kube/internal/quake/net"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)
var (
activePlayers = promauto.NewGauge(prometheus.GaugeOpts{
Name: "quake_active_players",
Help: "The current number of active players",
})
scores = promauto.NewGaugeVec(prometheus.GaugeOpts{
Name: "quake_player_scores",
Help: "Current scores by player, by map",
}, []string{"player", "map"})
pings = promauto.NewGaugeVec(prometheus.GaugeOpts{
Name: "quake_player_pings",
Help: "Current ping by player",
}, []string{"player"})
configReloads = promauto.NewCounter(prometheus.CounterOpts{
Name: "quake_config_reloads",
Help: "Config file reload count",
})
)
type StatusMetrics struct {
MapName string
Players []net.Player
}
func ConfigReloads() prometheus.Counter {
return configReloads
}
func Pings() *prometheus.GaugeVec {
return pings
}
func Scores() *prometheus.GaugeVec {
return scores
}
func ActivePlayers() prometheus.Gauge {
return activePlayers
}
func Report(metrics *StatusMetrics) {
ActivePlayers().Set(float64(len(metrics.Players)))
for _, p := range metrics.Players {
if len(metrics.MapName) > 0 {
Scores().WithLabelValues(p.Name, metrics.MapName).Set(float64(p.Score))
}
Pings().WithLabelValues(p.Name).Set(float64(p.Ping))
}
}