Passed
Push — main ( 0795ea...57a23e )
by Yume
02:19 queued 01:06
created

infrastructures.GetFiberTracer   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 0
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
package infrastructures
2
3
import (
4
	"context"
5
6
	"github.com/memnix/memnix-rest/config"
7
	"go.opentelemetry.io/otel"
8
	"go.opentelemetry.io/otel/exporters/jaeger"
9
	"go.opentelemetry.io/otel/propagation"
10
	"go.opentelemetry.io/otel/sdk/resource"
11
	sdktrace "go.opentelemetry.io/otel/sdk/trace"
12
	semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
13
	"go.opentelemetry.io/otel/trace"
14
)
15
16
var (
17
	fiberTracer = otel.Tracer("fiber-server")
18
	gormTracer  = otel.Tracer("gorm")
19
	tp          *sdktrace.TracerProvider
20
)
21
22
func getEndpoint() string {
23
	var url string
24
	if config.IsDevelopment() {
25
		url = config.EnvHelper.GetEnv("DEBUG_JAEGER_URL")
26
	} else {
27
		url = config.EnvHelper.GetEnv("JAEGER_URL")
28
	}
29
	return url + "/api/traces"
30
}
31
32
func InitTracer() error {
33
	exporter, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(getEndpoint())))
34
	if err != nil {
35
		return err
36
	}
37
38
	tp = sdktrace.NewTracerProvider(
39
		sdktrace.WithSampler(sdktrace.AlwaysSample()),
40
		sdktrace.WithBatcher(exporter),
41
		sdktrace.WithResource(
42
			resource.NewWithAttributes(
43
				semconv.SchemaURL,
44
				semconv.ServiceNameKey.String("memnix-backend"),
45
			)),
46
	)
47
48
	otel.SetTracerProvider(tp)
49
	otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{}))
50
51
	return nil
52
}
53
54
func ShutdownTracer() error {
55
	return tp.Shutdown(context.Background())
56
}
57
58
func GetTracer() *sdktrace.TracerProvider {
59
	return tp
60
}
61
62
func GetFiberTracer() trace.Tracer {
63
	return fiberTracer
64
}
65
66
func GetGormTracer() trace.Tracer {
67
	return gormTracer
68
}
69