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() }