From 5128e0641f42b026ffb3809a0bbd9201bcb8100b Mon Sep 17 00:00:00 2001 From: jbergner Date: Mon, 16 Jun 2025 11:28:34 +0200 Subject: [PATCH] Updated Metrics --- README.md | 3 ++- main.go | 30 +++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5d71513..deae189 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ # flod -First-Line-Of-Defense \ No newline at end of file +First-Line-Of-Defense + diff --git a/main.go b/main.go index 29b09b0..d0e0be2 100644 --- a/main.go +++ b/main.go @@ -77,10 +77,17 @@ var ( Name: "ipcheck_whitelisted_total", Help: "Total whitelisted IPs", }) + blocklistHashSizes = prometheus.NewGaugeVec( + prometheus.GaugeOpts{ + Name: "ipcheck_blocklist_hash_size", + Help: "Number of entries in each category", + }, + []string{"category"}, + ) ) func init() { - prometheus.MustRegister(checkRequests, checkBlocked, checkWhitelist) + prometheus.MustRegister(checkRequests, checkBlocked, checkWhitelist, blocklistHashSizes) } // Main @@ -98,10 +105,31 @@ func main() { http.HandleFunc("/traefik", handleTraefik) http.Handle("/metrics", promhttp.Handler()) + go func() { + ticker := time.NewTicker(10 * time.Second) + defer ticker.Stop() + for { + updateBlocklistMetrics() + <-ticker.C + } + }() + fmt.Println("Server läuft auf :8080") http.ListenAndServe(":8080", nil) } +func updateBlocklistMetrics() { + for cat := range blocklistURLs { + key := "bl:" + cat + count, err := rdb.HLen(ctx, key).Result() + if err != nil { + fmt.Printf("❌ Redis HLen Error for %s: %v\n", key, err) + continue + } + blocklistHashSizes.WithLabelValues(cat).Set(float64(count)) + } +} + // Import-Logik func importBlocklists() error { var wg sync.WaitGroup