Passed
Push — main ( 3ec306...c5cfaa )
by Yume
01:53 queued 44s
created

infrastructures/tracing.go   A

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 34
dl 0
loc 48
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A infrastructures.GetFiberTracer 0 2 1
A infrastructures.InitTracer 0 10 1
A infrastructures.ShutdownTracer 0 2 1
A infrastructures.initSentry 0 11 1
1
package infrastructures
2
3
import (
4
	"context"
5
6
	"github.com/getsentry/sentry-go"
7
	sentryotel "github.com/getsentry/sentry-go/otel"
8
	"github.com/memnix/memnix-rest/config"
9
	"github.com/uptrace/opentelemetry-go-extra/otelzap"
10
	"go.opentelemetry.io/otel"
11
	sdktrace "go.opentelemetry.io/otel/sdk/trace"
12
	"go.opentelemetry.io/otel/trace"
13
	"go.uber.org/zap"
14
)
15
16
var fiberTracer = otel.Tracer("fiber-server")
17
18
func InitTracer(cfg config.SentryConfigStruct) error {
19
	initSentry(cfg)
20
21
	tp := sdktrace.NewTracerProvider(
22
		sdktrace.WithSpanProcessor(sentryotel.NewSentrySpanProcessor()),
23
	)
24
	otel.SetTracerProvider(tp)
25
	otel.SetTextMapPropagator(sentryotel.NewSentryPropagator())
26
27
	return nil
28
}
29
30
func ShutdownTracer() error {
31
	return nil
32
}
33
34
func GetFiberTracer() trace.Tracer {
35
	return fiberTracer
36
}
37
38
func initSentry(cfg config.SentryConfigStruct) {
39
	otelzap.Ctx(context.Background()).Info("Initializing Sentry :", zap.Float64("traces_sample_rate", cfg.TracesSampleRate), zap.Float64("profiles_sample_rate", cfg.ProfilesSampleRate))
40
	_ = sentry.Init(sentry.ClientOptions{
41
		Dsn:                cfg.DSN,
42
		Debug:              cfg.Debug,
43
		AttachStacktrace:   true,
44
		Environment:        cfg.Environment,
45
		Release:            cfg.Release,
46
		EnableTracing:      true,
47
		TracesSampleRate:   cfg.TracesSampleRate,
48
		ProfilesSampleRate: cfg.ProfilesSampleRate,
49
	})
50
}
51