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