Enable Sentry profiling (without it doesn't send traces)

This commit is contained in:
ErickSkrauch 2024-10-04 03:37:39 +02:00
parent 2eda0caf55
commit ca840c1cc5
No known key found for this signature in database
GPG Key ID: 669339FCBB30EE0E
2 changed files with 14 additions and 6 deletions

View File

@ -6,15 +6,17 @@ import (
"os"
"os/signal"
"syscall"
"time"
"github.com/etherlabsio/healthcheck/v2"
"github.com/getsentry/sentry-go"
sentrygin "github.com/getsentry/sentry-go/gin"
"github.com/gin-gonic/gin"
"go.uber.org/multierr"
db "ely.by/accounts-profiles-endpoint/internal/db/mysql"
"ely.by/accounts-profiles-endpoint/internal/http"
"ely.by/accounts-profiles-endpoint/internal/logging/sentry"
sentryLogging "ely.by/accounts-profiles-endpoint/internal/logging/sentry"
"ely.by/accounts-profiles-endpoint/internal/services/chrly"
"ely.by/accounts-profiles-endpoint/internal/services/signer"
)
@ -26,7 +28,7 @@ func Serve() error {
ctx, _ = signal.NotifyContext(ctx, os.Interrupt, syscall.SIGTERM, os.Kill)
var errors, err error
err = sentry.InitWithConfig(config)
err = sentryLogging.InitWithConfig(config)
if err != nil {
return fmt.Errorf("unable to initialize Sentry: %w", err)
}
@ -52,7 +54,7 @@ func Serve() error {
r := gin.Default()
r.Use(sentrygin.New(sentrygin.Options{Repanic: true}))
r.Use(sentry.ErrorMiddleware())
r.Use(sentryLogging.ErrorMiddleware())
r.Use(http.ErrorMiddleware())
r.GET("/healthcheck", gin.WrapH(healthcheck.Handler(
@ -72,5 +74,7 @@ func Serve() error {
return fmt.Errorf("unable to start a server: %w", err)
}
sentry.Flush(2 * time.Second)
return nil
}

View File

@ -1,6 +1,8 @@
package sentry
import (
"strings"
"github.com/getsentry/sentry-go"
sentryGin "github.com/getsentry/sentry-go/gin"
"github.com/gin-gonic/gin"
@ -12,6 +14,7 @@ import (
func InitWithConfig(config *viper.Viper) error {
config.SetDefault("sentry.enable_tracing", false)
config.SetDefault("sentry.traces_sample_rate", 1.0)
config.SetDefault("sentry.profiles_sample_rate", 1.0)
sampleRate := config.GetFloat64("sentry.traces_sample_rate")
@ -19,14 +22,15 @@ func InitWithConfig(config *viper.Viper) error {
Dsn: viper.GetString("sentry.dsn"),
EnableTracing: viper.GetBool("sentry.enable_tracing"),
TracesSampler: func(ctx sentry.SamplingContext) float64 {
if ctx.Span.Name == "GET /healthcheck" {
if !strings.Contains(ctx.Span.Name, "/api") {
return 0
}
return sampleRate
},
Release: version.Version(),
Environment: config.GetString("sentry.environment"),
ProfilesSampleRate: config.GetFloat64("sentry.profiles_sample_rate"),
Release: version.Version(),
Environment: config.GetString("sentry.environment"),
Integrations: func(integrations []sentry.Integration) []sentry.Integration {
nDeleted := 0
for i, integration := range integrations {