53 lines
1.3 KiB
Go
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()
|
|
}
|