plapkit/prometheus.go
2024-06-25 22:46:58 -04:00

53 lines
1.3 KiB
Go

package main
import (
"log"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)
var (
switchCounter *prometheus.CounterVec = promauto.NewCounterVec(prometheus.CounterOpts{
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 promCountSwitches(h HookPayload, members []interface{}) {
for idx, id := range members {
role := "cofront"
if idx == 0 {
role = "front"
}
member := &PluralKitMember{
Name: "switched out",
}
member2, err := pkApi.GetMember(id.(string))
if err != nil {
member.Name = "%%lookup failed%%"
log.Println("[promCountSwitches] WARN lookup failed,", err)
} else {
member = member2
}
switchCounter.WithLabelValues(h.SystemID, id.(string), member.Name, role).Inc()
}
}
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()
}