fix: ignore healthchecks from traces

This commit is contained in:
DevMiner 2024-08-25 00:14:03 +02:00
parent 7116f8c0ca
commit 1e9ce542f5

50
main.go
View file

@ -182,7 +182,7 @@ func main() {
TraceRequestHeaders: []string{"origin", "x-nonce", "x-signature", "x-signed-by", "sentry-trace", "sentry-baggage"}, TraceRequestHeaders: []string{"origin", "x-nonce", "x-signature", "x-signed-by", "sentry-trace", "sentry-baggage"},
// origin for outgoing requests // origin for outgoing requests
TraceResponseHeaders: []string{"host", "x-nonce", "x-signature", "x-signed-by", "sentry-trace", "sentry-baggage"}, TraceResponseHeaders: []string{"host", "x-nonce", "x-signature", "x-signed-by", "sentry-trace", "sentry-baggage"},
// IgnoredRoutes: nil, IgnoredRoutes: []string{"/api/health"},
Logger: zerologr.New(&log.Logger).WithName("http-server"), Logger: zerologr.New(&log.Logger).WithName("http-server"),
TracePropagator: shouldPropagate, TracePropagator: shouldPropagate,
})) }))
@ -190,28 +190,7 @@ func main() {
log.Debug().Msg("Registering handlers") log.Debug().Msg("Registering handlers")
web.Get("/api/health", func(c *fiber.Ctx) error { web.Get("/api/health", healthCheck(db, nc))
dbWorking := true
if err := db.Ping(); err != nil {
log.Error().Err(err).Msg("Database healthcheck failed")
dbWorking = false
}
natsWorking := true
if status := nc.Status(); status != nats.CONNECTED {
log.Error().Str("status", status.String()).Msg("NATS healthcheck failed")
natsWorking = false
}
if dbWorking && natsWorking {
return c.SendString("lookin' good")
}
return api_schema.ErrInternalServerError(map[string]any{
"database": dbWorking,
"nats": natsWorking,
})
})
userHandler.Register(web.Group("/")) userHandler.Register(web.Group("/"))
noteHandler.Register(web.Group("/")) noteHandler.Register(web.Group("/"))
@ -374,3 +353,28 @@ func initServerActor(db *ent.Client, telemetry *unitel.Telemetry) error {
return tx.Finish() return tx.Finish()
} }
func healthCheck(db *ent.Client, nc *nats.Conn) fiber.Handler {
return func(c *fiber.Ctx) error {
dbWorking := true
if err := db.Ping(); err != nil {
log.Error().Err(err).Msg("Database healthcheck failed")
dbWorking = false
}
natsWorking := true
if status := nc.Status(); status != nats.CONNECTED {
log.Error().Str("status", status.String()).Msg("NATS healthcheck failed")
natsWorking = false
}
if dbWorking && natsWorking {
return c.SendString("lookin' good")
}
return api_schema.ErrInternalServerError(map[string]any{
"database": dbWorking,
"nats": natsWorking,
})
}
}