Skip to content

Commit

Permalink
Enable Sentry profiling (without it doesn't send traces)
Browse files Browse the repository at this point in the history
  • Loading branch information
erickskrauch committed Oct 4, 2024
1 parent 2eda0ca commit ca840c1
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 6 deletions.
10 changes: 7 additions & 3 deletions internal/cmd/serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand All @@ -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)
}
Expand All @@ -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(
Expand All @@ -72,5 +74,7 @@ func Serve() error {
return fmt.Errorf("unable to start a server: %w", err)
}

sentry.Flush(2 * time.Second)

return nil
}
10 changes: 7 additions & 3 deletions internal/logging/sentry/sentry.go
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -12,21 +14,23 @@ 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")

return sentry.Init(sentry.ClientOptions{
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 {
Expand Down

0 comments on commit ca840c1

Please sign in to comment.