From f0c7abebb126ab4553c4b5ce1592e3f3fd85b14a Mon Sep 17 00:00:00 2001 From: Yaron Idan Date: Sat, 12 Sep 2020 17:23:43 +0300 Subject: [PATCH 1/2] add healthcheck endpoint Signed-off-by: Yaron Idan --- main.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/main.go b/main.go index 27a529c..633fad9 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,7 @@ package main import ( "bufio" + "fmt" "net" "net/http" _ "net/http/pprof" @@ -250,6 +251,7 @@ func main() { var ( listenAddress = kingpin.Flag("web.listen-address", "The address on which to expose the web interface and generated Prometheus metrics.").Default(":9102").String() enableLifecycle = kingpin.Flag("web.enable-lifecycle", "Enable shutdown and reload via HTTP request.").Default("false").Bool() + enableHealthEndpoint = kingpin.Flag("web.enable-health-path", "Enable health check via HTTP request.").Default("true").Bool() metricsEndpoint = kingpin.Flag("web.telemetry-path", "Path under which to expose metrics.").Default("/metrics").String() statsdListenUDP = kingpin.Flag("statsd.listen-udp", "The UDP address on which to receive statsd metric lines. \"\" disables it.").Default(":9125").String() statsdListenTCP = kingpin.Flag("statsd.listen-tcp", "The TCP address on which to receive statsd metric lines. \"\" disables it.").Default(":9125").String() @@ -494,6 +496,16 @@ func main() { }) } + if *enableHealthEndpoint { + mux.HandleFunc("/-/healthy", func(w http.ResponseWriter, r *http.Request) { + if r.Method == http.MethodGet { + level.Debug(logger).Log("msg", "Received health check") + w.WriteHeader(http.StatusOK) + fmt.Fprintf(w, "Statsd Exporter is Healthy.\n") + } + }) + } + go serveHTTP(mux, *listenAddress, logger) signals := make(chan os.Signal, 1) From f5e400962a1d921d4e39dc821a6048194c74a24b Mon Sep 17 00:00:00 2001 From: Yaron Idan Date: Mon, 12 Oct 2020 13:44:00 +0300 Subject: [PATCH 2/2] remove flag and add ready endpoint Signed-off-by: Yaron Idan --- main.go | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/main.go b/main.go index 633fad9..1b63e2a 100644 --- a/main.go +++ b/main.go @@ -251,7 +251,6 @@ func main() { var ( listenAddress = kingpin.Flag("web.listen-address", "The address on which to expose the web interface and generated Prometheus metrics.").Default(":9102").String() enableLifecycle = kingpin.Flag("web.enable-lifecycle", "Enable shutdown and reload via HTTP request.").Default("false").Bool() - enableHealthEndpoint = kingpin.Flag("web.enable-health-path", "Enable health check via HTTP request.").Default("true").Bool() metricsEndpoint = kingpin.Flag("web.telemetry-path", "Path under which to expose metrics.").Default("/metrics").String() statsdListenUDP = kingpin.Flag("statsd.listen-udp", "The UDP address on which to receive statsd metric lines. \"\" disables it.").Default(":9125").String() statsdListenTCP = kingpin.Flag("statsd.listen-tcp", "The TCP address on which to receive statsd metric lines. \"\" disables it.").Default(":9125").String() @@ -496,15 +495,21 @@ func main() { }) } - if *enableHealthEndpoint { - mux.HandleFunc("/-/healthy", func(w http.ResponseWriter, r *http.Request) { - if r.Method == http.MethodGet { - level.Debug(logger).Log("msg", "Received health check") - w.WriteHeader(http.StatusOK) - fmt.Fprintf(w, "Statsd Exporter is Healthy.\n") - } - }) - } + mux.HandleFunc("/-/healthy", func(w http.ResponseWriter, r *http.Request) { + if r.Method == http.MethodGet { + level.Debug(logger).Log("msg", "Received health check") + w.WriteHeader(http.StatusOK) + fmt.Fprintf(w, "Statsd Exporter is Healthy.\n") + } + }) + + mux.HandleFunc("/-/ready", func(w http.ResponseWriter, r *http.Request) { + if r.Method == http.MethodGet { + level.Debug(logger).Log("msg", "Received ready check") + w.WriteHeader(http.StatusOK) + fmt.Fprintf(w, "Statsd Exporter is Ready.\n") + } + }) go serveHTTP(mux, *listenAddress, logger)