Use common httpserver across fission (#2409)

* Defining httpserver package to capture httpserver shutdown and
introduces uniform running of http server across codebase.
* Add unit tests for httpserver

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
This commit is contained in:
Sanket Sudake
2022-04-14 11:35:58 +05:30
committed by GitHub
parent b638a6d047
commit 8442e21621
18 changed files with 139 additions and 93 deletions
+4 -22
View File
@@ -23,34 +23,16 @@ import (
"github.com/prometheus/client_golang/prometheus/promhttp"
"go.uber.org/zap"
"github.com/fission/fission/pkg/utils/httpserver"
)
func ServeMetrics(ctx context.Context, logger *zap.Logger) {
metricsAddr := os.Getenv("METRICS_ADDR")
if metricsAddr == "" {
metricsAddr = ":8080"
metricsAddr = "8080"
}
mux := http.NewServeMux()
mux.Handle("/metrics", promhttp.Handler())
s := &http.Server{
Addr: metricsAddr,
Handler: mux,
}
logger.Info("Starting metrics server", zap.String("address", metricsAddr))
go func() {
if err := s.ListenAndServe(); err != nil {
if err != http.ErrServerClosed {
logger.Error("Metrics server error", zap.Error(err))
}
}
}()
<-ctx.Done()
logger.Info("Shutting down metrics server")
err := s.Shutdown(ctx)
if err == context.DeadlineExceeded || err == context.Canceled {
return
}
if err != nil {
logger.Error("Failed to shutdown metrics server", zap.Error(err))
}
httpserver.StartServer(ctx, logger, "metrics", metricsAddr, mux)
}