this repo has no description
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}