From 19c8ed66b3185ff1a05198326ef67a90218f7090 Mon Sep 17 00:00:00 2001 From: Hao Chen Date: Mon, 16 May 2022 15:48:32 +0800 Subject: [PATCH] if the web server start failed, exit the EaseProbe (#90) --- cmd/easeprobe/main.go | 6 ++++-- web/server.go | 49 ++++++++++++++++++++++++------------------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/cmd/easeprobe/main.go b/cmd/easeprobe/main.go index 1c9ee4e4..78e1add0 100644 --- a/cmd/easeprobe/main.go +++ b/cmd/easeprobe/main.go @@ -80,6 +80,9 @@ func main() { log.Infoln("Dry Notification Mode...") } + // Start the HTTP Server + web.Server() + // Probers probers := c.AllProbers() @@ -107,9 +110,8 @@ func main() { // Start the Event Watching go watchEvent(notifyChan, notifies, doneWatch) - // Start the HTTP Server + // Set probers into web server web.SetProbers(probers) - web.Server() // Set the Cron Job for SLA Report if conf.Get().Settings.SLAReport.Schedule != conf.None { diff --git a/web/server.go b/web/server.go index 0aaf6029..55bac069 100644 --- a/web/server.go +++ b/web/server.go @@ -86,34 +86,41 @@ func Server() { log.Debugf("[Web] Auto refresh interval time: %s", interval) } - // Start the http server - go func() { - r := chi.NewRouter() + // Prepare the router + r := chi.NewRouter() + + filename := c.Settings.HTTPServer.AccessLog.File + if len(filename) > 0 { + log.Infof("[Web] Access Log output file: %s", filename) + logger := c.Settings.HTTPServer.AccessLog.Logger + r.Use(NewStructuredLogger(logger)) + } - filename := c.Settings.HTTPServer.AccessLog.File - if len(filename) > 0 { - log.Infof("[Web] Access Log output file: %s", filename) - logger := c.Settings.HTTPServer.AccessLog.Logger - r.Use(NewStructuredLogger(logger)) - } + r.Use(middleware.RealIP) + r.Use(middleware.Logger) + r.Use(middleware.Recoverer) + r.Use(middleware.RedirectSlashes) + r.Use(middleware.StripSlashes) - r.Use(middleware.RealIP) - r.Use(middleware.Logger) - r.Use(middleware.Recoverer) - r.Use(middleware.RedirectSlashes) - r.Use(middleware.StripSlashes) + r.Get("/", slaHTML) - r.Get("/", slaHTML) + r.Route("/api/v1", func(r chi.Router) { + r.Get("/sla", slaJSON) + }) - r.Route("/api/v1", func(r chi.Router) { - r.Get("/sla", slaJSON) - }) + r.NotFound(slaHTML) - r.NotFound(slaHTML) + server, err := net.Listen("tcp", host+":"+port) + if err != nil { + log.Fatalf("[Web] Failed to start the http server: %s", err) + } + log.Infof("[Web] HTTP server is listening on %s:%s", host, port) - log.Infof("[Web] HTTP server is listening on %s:%s", host, port) - if err := http.ListenAndServe(host+":"+port, r); err != nil { + // Start the http server + go func() { + if err := http.Serve(server, r); err != nil { log.Errorf("[Web] HTTP server error: %s", err) } }() + }