plapkit/prometheus.go
2024-06-26 17:28:42 -04:00

61 lines
1.5 KiB
Go

package main
import (
"log"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)
var (
// known high signals, we will set these to zero after.
// key is uuid:role
knownHighSwitches = map[string]prometheus.Labels{} // tima was here
switchGauge *prometheus.GaugeVec = promauto.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "plapkit",
Name: "switches",
}, []string{"system", "member", "member_display", "role"})
messageCounter *prometheus.CounterVec = promauto.NewCounterVec(prometheus.CounterOpts{
Namespace: "plapkit",
Name: "messages",
}, []string{"system", "member", "member_display"})
)
func clearHighSwitches() {
for _, labels := range knownHighSwitches {
switchGauge.With(labels).Set(0)
}
}
func promCountSwitches(h HookPayload, members []PluralKitMember) {
clearHighSwitches()
for idx, member := range members {
role := "cofront"
if idx == 0 {
role = "front"
}
labels := prometheus.Labels{
"system": h.SystemID,
"member": member.UUID,
"member_display": member.Name,
"role": role,
}
switchGauge.With(labels).Set(1)
knownHighSwitches[member.UUID+":"+role] = labels
}
}
func promCountMessage(h HookPayload) {
member, ok := h.Data["member"].(map[string]interface{})
if !ok {
log.Println("[promCountMessage] failed to get member from data")
return
}
messageCounter.WithLabelValues(h.SystemID, member["uuid"].(string), member["name"].(string)).Inc()
}