github.com/vseinstrumentiru/lego@v1.0.2/internal/lego/monitor/telemetry/provider.go (about)

     1  package telemetry
     2  
     3  import (
     4  	health "github.com/AppsFlyer/go-sundheit"
     5  	healthhttp "github.com/AppsFlyer/go-sundheit/http"
     6  	"github.com/vseinstrumentiru/lego/internal/lego/build"
     7  	"go.opencensus.io/zpages"
     8  	"logur.dev/logur"
     9  	"net/http"
    10  )
    11  
    12  func Provide(logger logur.LoggerFacade, info build.Info) (*http.ServeMux, health.Health) {
    13  	telemetryRouter := http.DefaultServeMux
    14  	telemetryRouter.Handle("/buildinfo", build.Handler(info))
    15  	zpages.Handle(telemetryRouter, "/debug")
    16  
    17  	healthz := health.New()
    18  	healthz.WithCheckListener(NewLogger(logur.WithField(logger, "component", "healthcheck")))
    19  
    20  	{
    21  		handler := healthhttp.HandleHealthJSON(healthz)
    22  		telemetryRouter.Handle("/healthz", handler)
    23  
    24  		// Kubernetes style health checks
    25  		telemetryRouter.HandleFunc("/healthz/live", func(w http.ResponseWriter, _ *http.Request) {
    26  			_, _ = w.Write([]byte("ok"))
    27  		})
    28  		telemetryRouter.Handle("/healthz/ready", handler)
    29  
    30  		return telemetryRouter, healthz
    31  	}
    32  }