// metrics-devserver stellt den OPS-03-Metrics-Aggregator (internal/metrics) // unter /metrics bereit, damit ein echter Prometheus-Scrape-Vorgang gegen // den Core-Dienst geprueft werden kann (Pruefung 3). Getrennt von cmd/core // aus demselben Grund wie die anderen *-devserver. package main import ( "context" "log" "net/http" "os" "gitea.perlbach24.de/scripte/nexarch/internal/db" "gitea.perlbach24.de/scripte/nexarch/internal/metrics" ) func main() { dsn := os.Getenv("NEXARCH_REGISTRY_DSN") if dsn == "" { log.Fatal("NEXARCH_REGISTRY_DSN nicht gesetzt") } addr := os.Getenv("NEXARCH_METRICS_LISTEN_ADDR") if addr == "" { addr = ":8085" } ctx := context.Background() pool, err := db.Connect(ctx, dsn) if err != nil { log.Fatalf("db: %v", err) } defer pool.Close() sourceStore := metrics.NewSourceStore(pool) agg := metrics.NewAggregator(metrics.NewCoreRegistry(), sourceStore.Provide) mux := http.NewServeMux() mux.HandleFunc("/metrics", agg.Handler()) mux.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) }) log.Printf("metrics-devserver listening on %s", addr) log.Fatal(http.ListenAndServe(addr, mux)) }