From 067103947471f56d62ccab8b6b70758743ddfc24 Mon Sep 17 00:00:00 2001 From: Florian Schade Date: Wed, 25 Sep 2024 11:45:12 +0200 Subject: [PATCH] enhancement: add readyz and healthz check handler --- ocis-pkg/handlers/checker.go | 129 ++++++++++++++++++ ocis-pkg/handlers/checker_test.go | 29 ++++ ocis-pkg/handlers/debughandlers.go | 34 ----- ocis-pkg/service/debug/option.go | 12 +- ocis-pkg/service/debug/service.go | 16 ++- ocis-pkg/shared/healthchecklist.go | 29 ---- services/activitylog/pkg/command/server.go | 9 +- services/antivirus/pkg/command/server.go | 12 +- .../app-provider/pkg/server/debug/server.go | 9 +- .../app-registry/pkg/server/debug/server.go | 9 +- services/audit/pkg/command/server.go | 12 +- services/auth-app/pkg/server/debug/server.go | 9 +- .../auth-basic/pkg/server/debug/server.go | 9 +- .../auth-bearer/pkg/server/debug/server.go | 9 +- .../auth-machine/pkg/server/debug/server.go | 9 +- .../auth-service/pkg/server/debug/server.go | 9 +- services/clientlog/pkg/command/server.go | 12 +- .../collaboration/pkg/server/debug/server.go | 9 +- services/eventhistory/pkg/command/server.go | 14 +- services/frontend/pkg/server/debug/server.go | 9 +- services/gateway/pkg/server/debug/server.go | 9 +- services/graph/pkg/server/debug/server.go | 9 +- services/groups/pkg/server/debug/server.go | 9 +- services/idm/pkg/command/server.go | 12 +- services/idm/pkg/server/debug/server.go | 9 +- services/idp/pkg/server/debug/server.go | 49 +++---- .../invitations/pkg/server/debug/server.go | 9 +- services/nats/pkg/command/server.go | 12 +- services/notifications/pkg/command/server.go | 10 +- services/ocdav/pkg/server/debug/server.go | 9 +- services/ocm/pkg/server/debug/server.go | 9 +- services/ocs/pkg/server/debug/server.go | 9 +- services/policies/pkg/command/server.go | 9 +- services/postprocessing/pkg/command/server.go | 14 +- services/proxy/pkg/server/debug/server.go | 12 +- services/search/pkg/server/debug/server.go | 9 +- services/settings/pkg/server/debug/server.go | 9 +- services/sharing/pkg/server/debug/server.go | 9 +- services/sse/pkg/command/server.go | 9 +- .../pkg/server/debug/server.go | 9 +- .../storage-shares/pkg/server/debug/server.go | 9 +- .../storage-system/pkg/server/debug/server.go | 9 +- .../storage-users/pkg/server/debug/server.go | 9 +- .../thumbnails/pkg/server/debug/server.go | 9 +- services/userlog/pkg/command/server.go | 14 +- services/users/pkg/server/debug/server.go | 9 +- services/web/pkg/server/debug/server.go | 9 +- services/webdav/pkg/server/debug/server.go | 9 +- services/webfinger/pkg/server/debug/server.go | 9 +- 49 files changed, 511 insertions(+), 199 deletions(-) create mode 100644 ocis-pkg/handlers/checker.go create mode 100644 ocis-pkg/handlers/checker_test.go delete mode 100644 ocis-pkg/handlers/debughandlers.go delete mode 100644 ocis-pkg/shared/healthchecklist.go diff --git a/ocis-pkg/handlers/checker.go b/ocis-pkg/handlers/checker.go new file mode 100644 index 000000000..29df6177e --- /dev/null +++ b/ocis-pkg/handlers/checker.go @@ -0,0 +1,129 @@ +package handlers + +import ( + "context" + "fmt" + "io" + "maps" + "net" + "net/http" + + "golang.org/x/sync/errgroup" + + "github.com/owncloud/ocis/v2/ocis-pkg/log" +) + +// check is a function that performs a check. +type check func(ctx context.Context) error + +// CheckHandlerConfiguration defines the configuration for the CheckHandler. +type CheckHandlerConfiguration struct { + logger log.Logger + checks map[string]check + limit int + statusFailed int + statusSuccess int +} + +// NewCheckHandlerConfiguration initializes a new CheckHandlerConfiguration. +func NewCheckHandlerConfiguration() CheckHandlerConfiguration { + return CheckHandlerConfiguration{ + checks: make(map[string]check), + limit: -1, + statusFailed: http.StatusInternalServerError, + statusSuccess: http.StatusOK, + } +} + +// WithLogger sets the logger for the CheckHandlerConfiguration. +func (c CheckHandlerConfiguration) WithLogger(l log.Logger) CheckHandlerConfiguration { + c.logger = l + return c +} + +// WithCheck sets a check for the CheckHandlerConfiguration. +func (c CheckHandlerConfiguration) WithCheck(name string, f check) CheckHandlerConfiguration { + if _, ok := c.checks[name]; ok { + c.logger.Panic().Str("check", name).Msg("check already exists") + } + + c.checks[name] = f + return c +} + +// WithLimit limits the number of active goroutines for the checks to at most n +func (c CheckHandlerConfiguration) WithLimit(n int) CheckHandlerConfiguration { + c.limit = n + return c +} + +// WithStatusFailed sets the status code for the failed checks. +func (c CheckHandlerConfiguration) WithStatusFailed(status int) CheckHandlerConfiguration { + c.statusFailed = status + return c +} + +// WithStatusSuccess sets the status code for the successful checks. +func (c CheckHandlerConfiguration) WithStatusSuccess(status int) CheckHandlerConfiguration { + c.statusSuccess = status + return c +} + +// CheckHandler is a http Handler that performs different checks. +type CheckHandler struct { + conf CheckHandlerConfiguration +} + +// NewCheckHandler initializes a new CheckHandler. +func NewCheckHandler(c CheckHandlerConfiguration) *CheckHandler { + c.checks = maps.Clone(c.checks) // prevent check duplication after initialization + return &CheckHandler{ + conf: c, + } +} + +// AddCheck adds a check to the CheckHandler. +func (h *CheckHandler) AddCheck(name string, c check) { + h.conf.WithCheck(name, c) +} + +func (h *CheckHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + g, ctx := errgroup.WithContext(r.Context()) + g.SetLimit(h.conf.limit) + + for name, check := range h.conf.checks { + g.Go(func() error { + if err := check(ctx); err != nil { // since go 1.22 for loops have a per-iteration scope instead of per-loop scope, no need to pin the check... + return fmt.Errorf("'%s': %w", name, err) + } + + return nil + }) + } + + status := h.conf.statusSuccess + if err := g.Wait(); err != nil { + status = h.conf.statusFailed + h.conf.logger.Error().Err(err).Msg("check failed") + } + + w.Header().Set("Content-Type", "text/plain") // fixMe: should be application/json!?! + w.WriteHeader(status) + + if _, err := io.WriteString(w, http.StatusText(status)); err != nil { // io.WriteString should not fail, but if it does, we want to know. + h.conf.logger.Panic().Err(err).Msg("failed to write response") + } +} + +// NewTCPCheck returns a check that connects to a given tcp endpoint. +func NewTCPCheck(address string) func(ctx context.Context) error { + return func(ctx context.Context) error { + conn, err := net.Dial("tcp", address) + if err != nil { + return err + } + defer conn.Close() + + return nil + } +} diff --git a/ocis-pkg/handlers/checker_test.go b/ocis-pkg/handlers/checker_test.go new file mode 100644 index 000000000..0c5cadb28 --- /dev/null +++ b/ocis-pkg/handlers/checker_test.go @@ -0,0 +1,29 @@ +package handlers_test + +import ( + "context" + "fmt" + "testing" + + "github.com/owncloud/ocis/v2/ocis-pkg/handlers" +) + +func TestCheckHandler_AddCheck(t *testing.T) { + c := handlers.NewCheckHandlerConfiguration().WithCheck("shared-check", func(ctx context.Context) error { return nil }) + + t.Run("configured checks are unique once added", func(t *testing.T) { + defer func() { + if r := recover(); r != nil { + t.Errorf("checks should be unique, got %v", r) + } + }() + + h1 := handlers.NewCheckHandler(c) + h1.AddCheck("check-with-same-name", func(ctx context.Context) error { return nil }) + + h2 := handlers.NewCheckHandler(c) + h2.AddCheck("check-with-same-name", func(ctx context.Context) error { return nil }) + + fmt.Print(1) + }) +} diff --git a/ocis-pkg/handlers/debughandlers.go b/ocis-pkg/handlers/debughandlers.go deleted file mode 100644 index ebc6de781..000000000 --- a/ocis-pkg/handlers/debughandlers.go +++ /dev/null @@ -1,34 +0,0 @@ -package handlers - -import ( - "io" - "net/http" -) - -// Health can be used for a health endpoint -func Health(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "text/plain") - w.WriteHeader(http.StatusOK) - - // TODO: check if services are up and running - - _, err := io.WriteString(w, http.StatusText(http.StatusOK)) - // io.WriteString should not fail but if it does, we want to know. - if err != nil { - panic(err) - } -} - -// Ready can be used as a ready endpoint -func Ready(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "text/plain") - w.WriteHeader(http.StatusOK) - - // TODO: check if services are up and running - - _, err := io.WriteString(w, http.StatusText(http.StatusOK)) - // io.WriteString should not fail but if it does, we want to know. - if err != nil { - panic(err) - } -} diff --git a/ocis-pkg/service/debug/option.go b/ocis-pkg/service/debug/option.go index 5f9f59332..3ed6b162f 100644 --- a/ocis-pkg/service/debug/option.go +++ b/ocis-pkg/service/debug/option.go @@ -20,9 +20,9 @@ type Options struct { Token string Pprof bool Zpages bool - Health func(http.ResponseWriter, *http.Request) - Ready func(http.ResponseWriter, *http.Request) - ConfigDump func(http.ResponseWriter, *http.Request) + Health http.Handler + Ready http.Handler + ConfigDump http.Handler CorsAllowedOrigins []string CorsAllowedMethods []string CorsAllowedHeaders []string @@ -97,21 +97,21 @@ func Zpages(z bool) Option { } // Health provides a function to set the health option. -func Health(h func(http.ResponseWriter, *http.Request)) Option { +func Health(h http.Handler) Option { return func(o *Options) { o.Health = h } } // Ready provides a function to set the ready option. -func Ready(r func(http.ResponseWriter, *http.Request)) Option { +func Ready(r http.Handler) Option { return func(o *Options) { o.Ready = r } } // ConfigDump to be documented. -func ConfigDump(r func(http.ResponseWriter, *http.Request)) Option { +func ConfigDump(r http.Handler) Option { return func(o *Options) { o.ConfigDump = r } diff --git a/ocis-pkg/service/debug/service.go b/ocis-pkg/service/debug/service.go index 651856f42..82e056ea7 100644 --- a/ocis-pkg/service/debug/service.go +++ b/ocis-pkg/service/debug/service.go @@ -8,11 +8,12 @@ import ( chimiddleware "github.com/go-chi/chi/v5/middleware" "github.com/justinas/alice" + "github.com/prometheus/client_golang/prometheus/promhttp" + "go.opentelemetry.io/contrib/zpages" + "github.com/owncloud/ocis/v2/ocis-pkg/cors" "github.com/owncloud/ocis/v2/ocis-pkg/middleware" graphMiddleware "github.com/owncloud/ocis/v2/services/graph/pkg/middleware" - "github.com/prometheus/client_golang/prometheus/promhttp" - "go.opentelemetry.io/contrib/zpages" ) // NewService initializes a new debug service. @@ -28,11 +29,16 @@ func NewService(opts ...Option) *http.Server { promhttp.Handler(), )) - mux.HandleFunc("/healthz", dopts.Health) - mux.HandleFunc("/readyz", dopts.Ready) + if dopts.Health != nil { + mux.Handle("/healthz", dopts.Health) + } + + if dopts.Ready != nil { + mux.Handle("/readyz", dopts.Ready) + } if dopts.ConfigDump != nil { - mux.HandleFunc("/config", dopts.ConfigDump) + mux.Handle("/config", dopts.ConfigDump) } if dopts.Pprof { diff --git a/ocis-pkg/shared/healthchecklist.go b/ocis-pkg/shared/healthchecklist.go deleted file mode 100644 index ce240d7ed..000000000 --- a/ocis-pkg/shared/healthchecklist.go +++ /dev/null @@ -1,29 +0,0 @@ -package shared - -import "net" - -// Check is a single health-check -type Check func() error - -// RunChecklist runs all the given checks -func RunChecklist(checks ...Check) error { - for _, c := range checks { - err := c() - if err != nil { - return err - } - } - return nil -} - -// TCPConnect connects to a given tcp endpoint -func TCPConnect(host string) Check { - return func() error { - conn, err := net.Dial("tcp", host) - if err != nil { - return err - } - defer conn.Close() - return nil - } -} diff --git a/services/activitylog/pkg/command/server.go b/services/activitylog/pkg/command/server.go index af4300a0e..2fe02567d 100644 --- a/services/activitylog/pkg/command/server.go +++ b/services/activitylog/pkg/command/server.go @@ -146,6 +146,11 @@ func Server(cfg *config.Config) *cli.Command { } { + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(logger), + ) + server := debug.NewService( debug.Logger(logger), debug.Name(cfg.Service.Name), @@ -154,8 +159,8 @@ func Server(cfg *config.Config) *cli.Command { debug.Token(cfg.Debug.Token), debug.Pprof(cfg.Debug.Pprof), debug.Zpages(cfg.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ) gr.Add(server.ListenAndServe, func(_ error) { diff --git a/services/antivirus/pkg/command/server.go b/services/antivirus/pkg/command/server.go index 0acbd8732..d80355964 100644 --- a/services/antivirus/pkg/command/server.go +++ b/services/antivirus/pkg/command/server.go @@ -5,6 +5,8 @@ import ( "fmt" "github.com/oklog/run" + "github.com/urfave/cli/v2" + "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" "github.com/owncloud/ocis/v2/ocis-pkg/handlers" "github.com/owncloud/ocis/v2/ocis-pkg/log" @@ -14,7 +16,6 @@ import ( "github.com/owncloud/ocis/v2/services/antivirus/pkg/config" "github.com/owncloud/ocis/v2/services/antivirus/pkg/config/parser" "github.com/owncloud/ocis/v2/services/antivirus/pkg/service" - "github.com/urfave/cli/v2" ) // Server is the entrypoint for the server command. @@ -55,6 +56,11 @@ func Server(cfg *config.Config) *cli.Command { } { + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(logger), + ) + server := debug.NewService( debug.Logger(logger), debug.Name(cfg.Service.Name), @@ -63,8 +69,8 @@ func Server(cfg *config.Config) *cli.Command { debug.Token(cfg.Debug.Token), debug.Pprof(cfg.Debug.Pprof), debug.Zpages(cfg.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ) gr.Add(server.ListenAndServe, func(_ error) { diff --git a/services/app-provider/pkg/server/debug/server.go b/services/app-provider/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/app-provider/pkg/server/debug/server.go +++ b/services/app-provider/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/app-registry/pkg/server/debug/server.go b/services/app-registry/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/app-registry/pkg/server/debug/server.go +++ b/services/app-registry/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/audit/pkg/command/server.go b/services/audit/pkg/command/server.go index 93f945e49..442dbf01f 100644 --- a/services/audit/pkg/command/server.go +++ b/services/audit/pkg/command/server.go @@ -7,6 +7,8 @@ import ( "github.com/cs3org/reva/v2/pkg/events" "github.com/cs3org/reva/v2/pkg/events/stream" "github.com/oklog/run" + "github.com/urfave/cli/v2" + "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" "github.com/owncloud/ocis/v2/ocis-pkg/handlers" "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" @@ -16,7 +18,6 @@ import ( "github.com/owncloud/ocis/v2/services/audit/pkg/logging" svc "github.com/owncloud/ocis/v2/services/audit/pkg/service" "github.com/owncloud/ocis/v2/services/audit/pkg/types" - "github.com/urfave/cli/v2" ) // Server is the entrypoint for the server command. @@ -57,6 +58,11 @@ func Server(cfg *config.Config) *cli.Command { }) { + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(logger), + ) + server := debug.NewService( debug.Logger(logger), debug.Name(cfg.Service.Name), @@ -65,8 +71,8 @@ func Server(cfg *config.Config) *cli.Command { debug.Token(cfg.Debug.Token), debug.Pprof(cfg.Debug.Pprof), debug.Zpages(cfg.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ) gr.Add(server.ListenAndServe, func(_ error) { diff --git a/services/auth-app/pkg/server/debug/server.go b/services/auth-app/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/auth-app/pkg/server/debug/server.go +++ b/services/auth-app/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/auth-basic/pkg/server/debug/server.go b/services/auth-basic/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/auth-basic/pkg/server/debug/server.go +++ b/services/auth-basic/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/auth-bearer/pkg/server/debug/server.go b/services/auth-bearer/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/auth-bearer/pkg/server/debug/server.go +++ b/services/auth-bearer/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/auth-machine/pkg/server/debug/server.go b/services/auth-machine/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/auth-machine/pkg/server/debug/server.go +++ b/services/auth-machine/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/auth-service/pkg/server/debug/server.go b/services/auth-service/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/auth-service/pkg/server/debug/server.go +++ b/services/auth-service/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/clientlog/pkg/command/server.go b/services/clientlog/pkg/command/server.go index 80261be3d..0c130019e 100644 --- a/services/clientlog/pkg/command/server.go +++ b/services/clientlog/pkg/command/server.go @@ -8,6 +8,8 @@ import ( "github.com/cs3org/reva/v2/pkg/events/stream" "github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool" "github.com/oklog/run" + "github.com/urfave/cli/v2" + "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" "github.com/owncloud/ocis/v2/ocis-pkg/handlers" "github.com/owncloud/ocis/v2/ocis-pkg/registry" @@ -19,7 +21,6 @@ import ( "github.com/owncloud/ocis/v2/services/clientlog/pkg/logging" "github.com/owncloud/ocis/v2/services/clientlog/pkg/metrics" "github.com/owncloud/ocis/v2/services/clientlog/pkg/service" - "github.com/urfave/cli/v2" ) // all events we care about @@ -116,6 +117,11 @@ func Server(cfg *config.Config) *cli.Command { } { + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(logger), + ) + server := debug.NewService( debug.Logger(logger), debug.Name(cfg.Service.Name), @@ -124,8 +130,8 @@ func Server(cfg *config.Config) *cli.Command { debug.Token(cfg.Debug.Token), debug.Pprof(cfg.Debug.Pprof), debug.Zpages(cfg.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ) gr.Add(server.ListenAndServe, func(_ error) { diff --git a/services/collaboration/pkg/server/debug/server.go b/services/collaboration/pkg/server/debug/server.go index 83e1ed1ea..ce5e8f020 100644 --- a/services/collaboration/pkg/server/debug/server.go +++ b/services/collaboration/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name+"."+options.Config.App.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/eventhistory/pkg/command/server.go b/services/eventhistory/pkg/command/server.go index 1c9146aa7..b098ccb19 100644 --- a/services/eventhistory/pkg/command/server.go +++ b/services/eventhistory/pkg/command/server.go @@ -7,6 +7,9 @@ import ( "github.com/cs3org/reva/v2/pkg/events/stream" "github.com/cs3org/reva/v2/pkg/store" "github.com/oklog/run" + "github.com/urfave/cli/v2" + microstore "go-micro.dev/v4/store" + "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" "github.com/owncloud/ocis/v2/ocis-pkg/handlers" "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" @@ -18,8 +21,6 @@ import ( "github.com/owncloud/ocis/v2/services/eventhistory/pkg/logging" "github.com/owncloud/ocis/v2/services/eventhistory/pkg/metrics" "github.com/owncloud/ocis/v2/services/eventhistory/pkg/server/grpc" - "github.com/urfave/cli/v2" - microstore "go-micro.dev/v4/store" ) // Server is the entrypoint for the server command. @@ -93,6 +94,11 @@ func Server(cfg *config.Config) *cli.Command { }) { + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(logger), + ) + server := debug.NewService( debug.Logger(logger), debug.Name(cfg.Service.Name), @@ -101,8 +107,8 @@ func Server(cfg *config.Config) *cli.Command { debug.Token(cfg.Debug.Token), debug.Pprof(cfg.Debug.Pprof), debug.Zpages(cfg.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ) gr.Add(server.ListenAndServe, func(_ error) { diff --git a/services/frontend/pkg/server/debug/server.go b/services/frontend/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/frontend/pkg/server/debug/server.go +++ b/services/frontend/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/gateway/pkg/server/debug/server.go b/services/gateway/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/gateway/pkg/server/debug/server.go +++ b/services/gateway/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/graph/pkg/server/debug/server.go b/services/graph/pkg/server/debug/server.go index 3f7159772..85136a94d 100644 --- a/services/graph/pkg/server/debug/server.go +++ b/services/graph/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,7 +25,7 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ), nil } diff --git a/services/groups/pkg/server/debug/server.go b/services/groups/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/groups/pkg/server/debug/server.go +++ b/services/groups/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/idm/pkg/command/server.go b/services/idm/pkg/command/server.go index 1c691b468..33460df92 100644 --- a/services/idm/pkg/command/server.go +++ b/services/idm/pkg/command/server.go @@ -14,6 +14,8 @@ import ( "github.com/libregraph/idm/pkg/ldbbolt" "github.com/libregraph/idm/server" "github.com/oklog/run" + "github.com/urfave/cli/v2" + "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" pkgcrypto "github.com/owncloud/ocis/v2/ocis-pkg/crypto" "github.com/owncloud/ocis/v2/ocis-pkg/handlers" @@ -24,7 +26,6 @@ import ( "github.com/owncloud/ocis/v2/services/idm/pkg/config" "github.com/owncloud/ocis/v2/services/idm/pkg/config/parser" "github.com/owncloud/ocis/v2/services/idm/pkg/logging" - "github.com/urfave/cli/v2" ) // Server is the entrypoint for the server command. @@ -94,6 +95,11 @@ func Server(cfg *config.Config) *cli.Command { } { + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(logger), + ) + server := debug.NewService( debug.Logger(logger), debug.Name(cfg.Service.Name), @@ -102,8 +108,8 @@ func Server(cfg *config.Config) *cli.Command { debug.Token(cfg.Debug.Token), debug.Pprof(cfg.Debug.Pprof), debug.Zpages(cfg.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ) gr.Add(server.ListenAndServe, func(_ error) { diff --git a/services/idm/pkg/server/debug/server.go b/services/idm/pkg/server/debug/server.go index 3f7159772..85136a94d 100644 --- a/services/idm/pkg/server/debug/server.go +++ b/services/idm/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,7 +25,7 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ), nil } diff --git a/services/idp/pkg/server/debug/server.go b/services/idp/pkg/server/debug/server.go index 25d175bee..9d7332678 100644 --- a/services/idp/pkg/server/debug/server.go +++ b/services/idp/pkg/server/debug/server.go @@ -1,22 +1,36 @@ package debug import ( - "io" + "context" "net/http" "net/url" "github.com/owncloud/ocis/v2/ocis-pkg/handlers" - "github.com/owncloud/ocis/v2/ocis-pkg/log" "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" - "github.com/owncloud/ocis/v2/ocis-pkg/shared" "github.com/owncloud/ocis/v2/ocis-pkg/version" - "github.com/owncloud/ocis/v2/services/idp/pkg/config" ) // Server initializes the debug service and server. func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger). + WithCheck("tcp-check", func(ctx context.Context) error { + tcpURL := options.Config.Ldap.URI + u, err := url.Parse(options.Config.Ldap.URI) + if err != nil { + return err + } + if u.Host != "" { + tcpURL = u.Host + } + + return handlers.NewTCPCheck(tcpURL)(ctx) + }), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -25,30 +39,7 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(health(options.Config, options.Logger)), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ), nil } - -// health implements the health check. -func health(cfg *config.Config, l log.Logger) func(http.ResponseWriter, *http.Request) { - return func(w http.ResponseWriter, r *http.Request) { - targetHost, err := url.Parse(cfg.Ldap.URI) - if err != nil { - l.Fatal().Err(err).Str("uri", cfg.Ldap.URI).Msg("invalid LDAP URI") - } - err = shared.RunChecklist(shared.TCPConnect(targetHost.Host)) - retVal := http.StatusOK - if err != nil { - l.Error().Err(err).Msg("Healtcheck failed") - retVal = http.StatusInternalServerError - } - w.Header().Set("Content-Type", "text/plain") - w.WriteHeader(retVal) - - _, err = io.WriteString(w, http.StatusText(retVal)) - if err != nil { - l.Fatal().Err(err).Msg("Could not write health check body") - } - } -} diff --git a/services/invitations/pkg/server/debug/server.go b/services/invitations/pkg/server/debug/server.go index 4b8e4a295..e6d7c3b07 100644 --- a/services/invitations/pkg/server/debug/server.go +++ b/services/invitations/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/nats/pkg/command/server.go b/services/nats/pkg/command/server.go index 983909d8c..f0ad16097 100644 --- a/services/nats/pkg/command/server.go +++ b/services/nats/pkg/command/server.go @@ -7,6 +7,8 @@ import ( "github.com/oklog/run" + "github.com/urfave/cli/v2" + "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" pkgcrypto "github.com/owncloud/ocis/v2/ocis-pkg/crypto" "github.com/owncloud/ocis/v2/ocis-pkg/handlers" @@ -16,7 +18,6 @@ import ( "github.com/owncloud/ocis/v2/services/nats/pkg/config/parser" "github.com/owncloud/ocis/v2/services/nats/pkg/logging" "github.com/owncloud/ocis/v2/services/nats/pkg/server/nats" - "github.com/urfave/cli/v2" ) // Server is the entrypoint for the server command. @@ -37,6 +38,11 @@ func Server(cfg *config.Config) *cli.Command { defer cancel() { + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(logger), + ) + server := debug.NewService( debug.Logger(logger), debug.Name(cfg.Service.Name), @@ -45,8 +51,8 @@ func Server(cfg *config.Config) *cli.Command { debug.Token(cfg.Debug.Token), debug.Pprof(cfg.Debug.Pprof), debug.Zpages(cfg.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ) gr.Add(server.ListenAndServe, func(_ error) { diff --git a/services/notifications/pkg/command/server.go b/services/notifications/pkg/command/server.go index 25cfd1263..45fc693b8 100644 --- a/services/notifications/pkg/command/server.go +++ b/services/notifications/pkg/command/server.go @@ -10,6 +10,7 @@ import ( "github.com/cs3org/reva/v2/pkg/events" "github.com/cs3org/reva/v2/pkg/events/stream" "github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool" + "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" "github.com/owncloud/ocis/v2/ocis-pkg/handlers" "github.com/owncloud/ocis/v2/ocis-pkg/registry" @@ -58,6 +59,11 @@ func Server(cfg *config.Config) *cli.Command { defer cancel() { + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(logger), + ) + server := debug.NewService( debug.Logger(logger), debug.Name(cfg.Service.Name), @@ -66,8 +72,8 @@ func Server(cfg *config.Config) *cli.Command { debug.Token(cfg.Debug.Token), debug.Pprof(cfg.Debug.Pprof), debug.Zpages(cfg.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ) gr.Add(server.ListenAndServe, func(_ error) { diff --git a/services/ocdav/pkg/server/debug/server.go b/services/ocdav/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/ocdav/pkg/server/debug/server.go +++ b/services/ocdav/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/ocm/pkg/server/debug/server.go b/services/ocm/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/ocm/pkg/server/debug/server.go +++ b/services/ocm/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/ocs/pkg/server/debug/server.go b/services/ocs/pkg/server/debug/server.go index 4b8e4a295..e6d7c3b07 100644 --- a/services/ocs/pkg/server/debug/server.go +++ b/services/ocs/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/policies/pkg/command/server.go b/services/policies/pkg/command/server.go index 6118381ad..3a68b3512 100644 --- a/services/policies/pkg/command/server.go +++ b/services/policies/pkg/command/server.go @@ -121,6 +121,11 @@ func Server(cfg *config.Config) *cli.Command { } { + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(logger), + ) + server := debug.NewService( debug.Logger(logger), debug.Name(cfg.Service.Name), @@ -129,8 +134,8 @@ func Server(cfg *config.Config) *cli.Command { debug.Token(cfg.Debug.Token), debug.Pprof(cfg.Debug.Pprof), debug.Zpages(cfg.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ) gr.Add(server.ListenAndServe, func(_ error) { diff --git a/services/postprocessing/pkg/command/server.go b/services/postprocessing/pkg/command/server.go index 6715a9146..a51289783 100644 --- a/services/postprocessing/pkg/command/server.go +++ b/services/postprocessing/pkg/command/server.go @@ -8,6 +8,9 @@ import ( "github.com/cs3org/reva/v2/pkg/events/stream" "github.com/cs3org/reva/v2/pkg/store" "github.com/oklog/run" + "github.com/urfave/cli/v2" + microstore "go-micro.dev/v4/store" + "github.com/owncloud/ocis/v2/ocis-pkg/handlers" "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" "github.com/owncloud/ocis/v2/ocis-pkg/tracing" @@ -16,8 +19,6 @@ import ( "github.com/owncloud/ocis/v2/services/postprocessing/pkg/config/parser" "github.com/owncloud/ocis/v2/services/postprocessing/pkg/logging" "github.com/owncloud/ocis/v2/services/postprocessing/pkg/service" - "github.com/urfave/cli/v2" - microstore "go-micro.dev/v4/store" ) // Server is the entrypoint for the server command. @@ -86,6 +87,11 @@ func Server(cfg *config.Config) *cli.Command { } { + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(logger), + ) + server := debug.NewService( debug.Logger(logger), debug.Name(cfg.Service.Name), @@ -94,8 +100,8 @@ func Server(cfg *config.Config) *cli.Command { debug.Token(cfg.Debug.Token), debug.Pprof(cfg.Debug.Pprof), debug.Zpages(cfg.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ) gr.Add(server.ListenAndServe, func(_ error) { diff --git a/services/proxy/pkg/server/debug/server.go b/services/proxy/pkg/server/debug/server.go index 04d033048..f73685496 100644 --- a/services/proxy/pkg/server/debug/server.go +++ b/services/proxy/pkg/server/debug/server.go @@ -16,6 +16,12 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + + var configDumpFunc http.HandlerFunc = configDump(options.Config) return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -24,9 +30,9 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), - debug.ConfigDump(configDump(options.Config)), + debug.Health(checkHandler), + debug.Ready(checkHandler), + debug.ConfigDump(configDumpFunc), ), nil } diff --git a/services/search/pkg/server/debug/server.go b/services/search/pkg/server/debug/server.go index 3f7159772..85136a94d 100644 --- a/services/search/pkg/server/debug/server.go +++ b/services/search/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,7 +25,7 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ), nil } diff --git a/services/settings/pkg/server/debug/server.go b/services/settings/pkg/server/debug/server.go index 4b8e4a295..e6d7c3b07 100644 --- a/services/settings/pkg/server/debug/server.go +++ b/services/settings/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/sharing/pkg/server/debug/server.go b/services/sharing/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/sharing/pkg/server/debug/server.go +++ b/services/sharing/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/sse/pkg/command/server.go b/services/sse/pkg/command/server.go index 06491d290..cbac80f3e 100644 --- a/services/sse/pkg/command/server.go +++ b/services/sse/pkg/command/server.go @@ -77,6 +77,11 @@ func Server(cfg *config.Config) *cli.Command { } { + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(logger), + ) + server := debug.NewService( debug.Logger(logger), debug.Name(cfg.Service.Name), @@ -85,8 +90,8 @@ func Server(cfg *config.Config) *cli.Command { debug.Token(cfg.Debug.Token), debug.Pprof(cfg.Debug.Pprof), debug.Zpages(cfg.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ) gr.Add(server.ListenAndServe, func(_ error) { diff --git a/services/storage-publiclink/pkg/server/debug/server.go b/services/storage-publiclink/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/storage-publiclink/pkg/server/debug/server.go +++ b/services/storage-publiclink/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/storage-shares/pkg/server/debug/server.go b/services/storage-shares/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/storage-shares/pkg/server/debug/server.go +++ b/services/storage-shares/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/storage-system/pkg/server/debug/server.go b/services/storage-system/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/storage-system/pkg/server/debug/server.go +++ b/services/storage-system/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/storage-users/pkg/server/debug/server.go b/services/storage-users/pkg/server/debug/server.go index 8c5ce23fb..13fa273ee 100644 --- a/services/storage-users/pkg/server/debug/server.go +++ b/services/storage-users/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Context(options.Context), @@ -21,8 +26,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/thumbnails/pkg/server/debug/server.go b/services/thumbnails/pkg/server/debug/server.go index 4b8e4a295..e6d7c3b07 100644 --- a/services/thumbnails/pkg/server/debug/server.go +++ b/services/thumbnails/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/userlog/pkg/command/server.go b/services/userlog/pkg/command/server.go index 71a52ca7f..50c134d7d 100644 --- a/services/userlog/pkg/command/server.go +++ b/services/userlog/pkg/command/server.go @@ -9,6 +9,9 @@ import ( "github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool" "github.com/cs3org/reva/v2/pkg/store" "github.com/oklog/run" + "github.com/urfave/cli/v2" + microstore "go-micro.dev/v4/store" + "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" "github.com/owncloud/ocis/v2/ocis-pkg/handlers" "github.com/owncloud/ocis/v2/ocis-pkg/registry" @@ -23,8 +26,6 @@ import ( "github.com/owncloud/ocis/v2/services/userlog/pkg/logging" "github.com/owncloud/ocis/v2/services/userlog/pkg/metrics" "github.com/owncloud/ocis/v2/services/userlog/pkg/server/http" - "github.com/urfave/cli/v2" - microstore "go-micro.dev/v4/store" ) // all events we care about @@ -144,6 +145,11 @@ func Server(cfg *config.Config) *cli.Command { } { + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(logger), + ) + server := debug.NewService( debug.Logger(logger), debug.Name(cfg.Service.Name), @@ -152,8 +158,8 @@ func Server(cfg *config.Config) *cli.Command { debug.Token(cfg.Debug.Token), debug.Pprof(cfg.Debug.Pprof), debug.Zpages(cfg.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ) gr.Add(server.ListenAndServe, func(_ error) { diff --git a/services/users/pkg/server/debug/server.go b/services/users/pkg/server/debug/server.go index 5686ae126..46264bd66 100644 --- a/services/users/pkg/server/debug/server.go +++ b/services/users/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), //debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), //debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), //debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/web/pkg/server/debug/server.go b/services/web/pkg/server/debug/server.go index 3f7159772..85136a94d 100644 --- a/services/web/pkg/server/debug/server.go +++ b/services/web/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,7 +25,7 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), ), nil } diff --git a/services/webdav/pkg/server/debug/server.go b/services/webdav/pkg/server/debug/server.go index 4b8e4a295..e6d7c3b07 100644 --- a/services/webdav/pkg/server/debug/server.go +++ b/services/webdav/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders), diff --git a/services/webfinger/pkg/server/debug/server.go b/services/webfinger/pkg/server/debug/server.go index 4b8e4a295..e6d7c3b07 100644 --- a/services/webfinger/pkg/server/debug/server.go +++ b/services/webfinger/pkg/server/debug/server.go @@ -12,6 +12,11 @@ import ( func Server(opts ...Option) (*http.Server, error) { options := newOptions(opts...) + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + return debug.NewService( debug.Logger(options.Logger), debug.Name(options.Config.Service.Name), @@ -20,8 +25,8 @@ func Server(opts ...Option) (*http.Server, error) { debug.Token(options.Config.Debug.Token), debug.Pprof(options.Config.Debug.Pprof), debug.Zpages(options.Config.Debug.Zpages), - debug.Health(handlers.Health), - debug.Ready(handlers.Ready), + debug.Health(checkHandler), + debug.Ready(checkHandler), debug.CorsAllowedOrigins(options.Config.HTTP.CORS.AllowedOrigins), debug.CorsAllowedMethods(options.Config.HTTP.CORS.AllowedMethods), debug.CorsAllowedHeaders(options.Config.HTTP.CORS.AllowedHeaders),