this repo has no description
at master 1.5 kB view raw
1package main 2 3import ( 4 "context" 5 "fmt" 6 "net/http" 7 "regexp" 8 9 "github.com/redis/go-redis/v9" 10) 11 12// https://guide.munin-monitoring.org/en/latest/reference/plugin.html#notes-on-field-names 13var sanitize = regexp.MustCompile("[^a-zA-Z0-9_]") 14 15var rdb = redis.NewClient(&redis.Options{ 16 Addr: "localhost:6379", 17 Password: "", 18 DB: 0, 19}) 20 21const AddedStop = 7 22 23func configHandler(w http.ResponseWriter, r *http.Request) { 24 labels, err := rdb.ZRevRange(context.TODO(), LabelsAdded, 0, AddedStop).Result() 25 if err != nil { 26 w.WriteHeader(http.StatusInternalServerError) 27 return 28 } 29 30 fmt.Fprint(w, "graph_title bluesky labels added (top 8, 15m MA)\n") 31 fmt.Fprint(w, "graph_category bluesky\n") 32 fmt.Fprint(w, "graph_vlabel labels / ${graph_period}\n") 33 fmt.Fprint(w, "graph_period minute\n") 34 fmt.Fprint(w, "graph_width 600\n") 35 fmt.Fprint(w, "graph_height 300\n") 36 37 for _, labelName := range labels { 38 slug := sanitize.ReplaceAll([]byte(labelName), []byte("_")) 39 fmt.Fprintf(w, "%s.label %s\n", slug, labelName) 40 fmt.Fprintf(w, "%s.type DERIVE\n", slug) 41 fmt.Fprintf(w, "%s.cdef %s,900,TRENDNAN\n", slug, slug) 42 } 43} 44 45func valueHandler(w http.ResponseWriter, r *http.Request) { 46 labels, err := rdb.ZRevRangeWithScores(context.TODO(), LabelsAdded, 0, AddedStop).Result() 47 if err != nil { 48 w.WriteHeader(http.StatusInternalServerError) 49 return 50 } 51 52 for _, label := range labels { 53 labelName := label.Member.(string) 54 slug := sanitize.ReplaceAll([]byte(labelName), []byte("_")) 55 fmt.Fprintf(w, "%s.value %0.f\n", slug, label.Score) 56 } 57}