44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
// 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))
|
|
}
|