Skip to content

Commit

Permalink
Merge pull request #4 from eminetto/add-jaeger
Browse files Browse the repository at this point in the history
feat: add jaeger
  • Loading branch information
eminetto committed Apr 13, 2023
2 parents 7b4bedc + 5769164 commit 0edc210
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 8 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ go 1.20
require (
github.com/stretchr/testify v1.8.2
go.opentelemetry.io/otel v1.14.0
go.opentelemetry.io/otel/exporters/jaeger v1.14.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0
go.opentelemetry.io/otel/sdk v1.14.0
go.opentelemetry.io/otel/trace v1.14.0
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,8 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM=
go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU=
go.opentelemetry.io/otel/exporters/jaeger v1.14.0 h1:CjbUNd4iN2hHmWekmOqZ+zSCU+dzZppG8XsV+A3oc8Q=
go.opentelemetry.io/otel/exporters/jaeger v1.14.0/go.mod h1:4Ay9kk5vELRrbg5z4cpP9EtmQRFap2Wb0woPG4lujZA=
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 h1:/fXHZHGvro6MVqV34fJzDhi7sHGpX3Ej/Qjmfn003ho=
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0/go.mod h1:UFG7EBMRdXyFstOwH028U0sVf+AvukSGhF0g8+dmNG8=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 h1:TKf2uAs2ueguzLaxOCBXNpHxfO/aC7PAdDsSH0IbeRQ=
Expand Down
76 changes: 76 additions & 0 deletions internal/telemetry/jaeger.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package telemetry

import (
"context"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/jaeger"
"go.opentelemetry.io/otel/propagation"
"go.opentelemetry.io/otel/sdk/resource"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
semconv "go.opentelemetry.io/otel/semconv/v1.10.0"
"go.opentelemetry.io/otel/trace"
"os"
)

type Jaeger struct {
provider *sdktrace.TracerProvider
tracer trace.Tracer
}

func NewJaeger(ctx context.Context, serviceName string) (*Jaeger, error) {
var tp *sdktrace.TracerProvider
var err error
tp, err = createJaegerTraceProvider(ctx, serviceName)
if err != nil {
return nil, err
}
otel.SetTracerProvider(tp)
otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{}))
tracer := tp.Tracer(serviceName)

return &Jaeger{
provider: tp,
tracer: tracer,
}, nil
}

func (ot *Jaeger) Start(ctx context.Context, name string, opts ...trace.SpanStartOption) (context.Context, Span) {
if len(opts) == 0 {
return ot.tracer.Start(ctx, name)
}
return ot.tracer.Start(ctx, name, opts[0])
}

func (ot *Jaeger) Shutdown(ctx context.Context) {
ot.provider.Shutdown(ctx)
}

func createJaegerTraceProvider(ctx context.Context, serviceName string) (*sdktrace.TracerProvider, error) {
res, err := resource.New(ctx,
resource.WithAttributes(
semconv.ServiceNameKey.String(serviceName),
),
)
if err != nil {
return nil, err
}

exp, err := jaeger.New(
jaeger.WithCollectorEndpoint(
jaeger.WithEndpoint(os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT")),
),
)
if err != nil {
return nil, err
}
tp := sdktrace.NewTracerProvider(
sdktrace.WithBatcher(exp),
sdktrace.WithResource(res),
sdktrace.WithResource(resource.NewWithAttributes(
semconv.SchemaURL,
semconv.ServiceNameKey.String(serviceName),
semconv.DeploymentEnvironmentKey.String("prod"), //@todo get from env
)),
)
return tp, nil
}
12 changes: 4 additions & 8 deletions internal/telemetry/opentelemetry.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ type OTel struct {
func New(ctx context.Context, serviceName string) (*OTel, error) {
var tp *sdktrace.TracerProvider
var err error
tp, err = createTraceProvider(ctx, serviceName)
tp, err = createOtelTraceProvider(ctx, serviceName)
if err != nil {
return nil, err
}
Expand All @@ -45,16 +45,12 @@ func (ot *OTel) Shutdown(ctx context.Context) {
ot.provider.Shutdown(ctx)
}

func createResource(ctx context.Context, serviceName string) (*resource.Resource, error) {
return resource.New(ctx,
func createOtelTraceProvider(ctx context.Context, serviceName string) (*sdktrace.TracerProvider, error) {
res, err := resource.New(ctx,
resource.WithAttributes(
semconv.ServiceNameKey.String(serviceName),
),
)
}

func createTraceProvider(ctx context.Context, serviceName string) (*sdktrace.TracerProvider, error) {
res, err := createResource(ctx, serviceName)
if err != nil {
return nil, err
}
Expand All @@ -73,7 +69,7 @@ func createTraceProvider(ctx context.Context, serviceName string) (*sdktrace.Tra
sdktrace.WithResource(resource.NewWithAttributes(
semconv.SchemaURL,
semconv.ServiceNameKey.String(serviceName),
semconv.DeploymentEnvironmentKey.String("prod"),
semconv.DeploymentEnvironmentKey.String("prod"), //@todo get from env
)),
)
return tp, nil
Expand Down

0 comments on commit 0edc210

Please sign in to comment.