diff --git a/cmd/api/main.go b/cmd/api/main.go index 992ddb2..066cf1d 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -3,8 +3,10 @@ package main import ( "context" "database/sql" + "expvar" "flag" "os" + "runtime" "strings" "sync" "time" @@ -114,6 +116,20 @@ func main() { logger.PrintInfo("database connection pool established", nil) + expvar.NewString("version").Set(version) + + expvar.Publish("goroutines", expvar.Func(func() any { + return runtime.NumGoroutine() + })) + + expvar.Publish("database", expvar.Func(func() any { + return db.Stats() + })) + + expvar.Publish("timestamp", expvar.Func(func() any { + return time.Now().Unix() + })) + app := &application{ config: cfg, logger: logger, diff --git a/cmd/api/routes.go b/cmd/api/routes.go index 1a41b09..c6a67ed 100644 --- a/cmd/api/routes.go +++ b/cmd/api/routes.go @@ -1,6 +1,7 @@ package main import ( + "expvar" "net/http" "github.com/julienschmidt/httprouter" @@ -25,5 +26,7 @@ func (app *application) routes() http.Handler { router.HandlerFunc(http.MethodPost, "/v1/tokens/authentication", app.createAuthenticationTokenHandler) + router.Handler(http.MethodGet, "/debug/vars", expvar.Handler()) + return app.recoverPanic(app.enableCORS(app.rateLimit(app.authenticate(router)))) }