From 583a9e9cdf0edc2cd395c2d23e34cc1ed7c8903b Mon Sep 17 00:00:00 2001 From: B4D_US3R Date: Wed, 5 Mar 2025 15:48:36 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80=D0=B8=D0=BA=20(=D0=BD=D0=B0=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=BD=D0=BE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 1 + main.go | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 5ce2018..c10f1dc 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require gopkg.in/yaml.v3 v3.0.1 require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.62.0 // indirect diff --git a/main.go b/main.go index af68edd..ffc3378 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( "log" "net/http" "pleroma_stats_exporter/config" + "time" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" @@ -58,16 +59,26 @@ func unmJson(jsonString string) map[string]any { return decodedJson } -func main() { - confFile := config.UnmYamlConfig("config.yaml") - - reg := prometheus.NewRegistry() - instanceMetrics := SetMetricsOpts(reg) +func updateMetrics(instanceMetrics *metrics, confFile config.InstanceVars) { instanceStat := unmJson(getJson("https://" + confFile.Target.Instance + "/api/v1/instance"))["stats"] instanceCount := instanceStat.(map[string]interface{}) userFollowers := unmJson(getJson("https://" + confFile.Target.Instance + "/api/v1/accounts/" + confFile.Target.UserID))["followers_count"] instanceMetrics.InstancesCount.Set(instanceCount["domain_count"].(float64)) instanceMetrics.FollowersCount.Set(userFollowers.(float64)) +} + +func main() { + confFile := config.UnmYamlConfig("config.yaml") + + reg := prometheus.NewRegistry() + instanceMetrics := SetMetricsOpts(reg) + + go func() { + for { + updateMetrics(instanceMetrics, confFile) + time.Sleep(5 * time.Minute) + } + }() http.Handle("/metrics", promhttp.HandlerFor(reg, promhttp.HandlerOpts{Registry: reg})) log.Fatal(http.ListenAndServe(confFile.Exporter.Listen+":"+confFile.Exporter.Port, nil))