Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace Jaeger SDK with OTEL SDK + OT Bridge #4574

Merged
merged 37 commits into from
Jul 20, 2023
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
29a75e9
adds OTLP to jtracer
afzal442 Jul 7, 2023
9dbdbe0
replace ot with otlp
afzal442 Jul 7, 2023
f739427
made singleton otel tracer
afzal442 Jul 8, 2023
d4ce5cf
subjugate initialise method to support both tracer
afzal442 Jul 9, 2023
642d772
adds shudown method to tp
afzal442 Jul 9, 2023
8425410
creates tracer in the parent method
afzal442 Jul 9, 2023
6bcab4b
transform gRPC OT to OTEL
afzalbin64 Jul 11, 2023
ce29456
update http_handler test to support OTEL sdktrace
afzalbin64 Jul 12, 2023
d429861
updates jaeger tracer to shutdown in the main call
afzal442 Jul 13, 2023
d705dad
adds gRPC server conn
afzal442 Jul 13, 2023
29824ce
adds logger to jtracer and adjsted the tp.shutdown
afzal442 Jul 13, 2023
2018857
adds Close method to jtracer pkg
afzal442 Jul 13, 2023
b54e872
enscapulate err field in jtracer
afzal442 Jul 14, 2023
fd6d707
reform tracer in cmd app
afzal442 Jul 14, 2023
b01349e
modifies jtracer in cmd/app
afzal442 Jul 14, 2023
9447bcf
moves the tracer to main
afzal442 Jul 15, 2023
68ec355
undo reader file changes
afzal442 Jul 15, 2023
a2eb44a
reformats the jtracer pkg
afzal442 Jul 15, 2023
9b2be20
modifies svc name
afzal442 Jul 17, 2023
9cb1de5
Merge remote-tracking branch 'upstream/main' into add-otel-tp-jtracer
afzal442 Jul 17, 2023
2e03743
adds middleware for tracer response
afzal442 Jul 17, 2023
056b81d
adds trace-id url
afzal442 Jul 17, 2023
7e157eb
reverts prob value
afzal442 Jul 17, 2023
8e96af8
minor modification around pointers and versions
afzal442 Jul 18, 2023
88d5f25
pass OTEL tracer into the tracer method
afzal442 Jul 19, 2023
55918b4
excludes pkg from testing
afzal442 Jul 19, 2023
f26e1b2
rmvs jtracer_test file
afzal442 Jul 20, 2023
0eba87a
modifies .nocover
afzal442 Jul 20, 2023
3600c09
makes minor modification around *jtracer pointer
afzal442 Jul 20, 2023
7f81f62
updates pointer receivers for jtracer
afzal442 Jul 20, 2023
eab6735
rmv pointer dereferrencing
afzal442 Jul 20, 2023
e419417
replces with jaeger-all-in-one
afzal442 Jul 20, 2023
22fb80a
updates the log err
afzal442 Jul 20, 2023
43e5032
updates logger to log err jaeger-query
afzal442 Jul 20, 2023
c64e90c
simplifies the traceRes obj
afzal442 Jul 20, 2023
c2960e3
adds defer to resp from Do()
afzal442 Jul 20, 2023
f905480
rmvs OT tracer
afzal442 Jul 20, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 43 additions & 2 deletions pkg/jtracer/jtracer.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,57 @@

package jtracer

import "github.com/opentracing/opentracing-go"
import (
"context"
"fmt"

"github.com/opentracing/opentracing-go"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
"go.opentelemetry.io/otel/propagation"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
"go.opentelemetry.io/otel/trace"
)

type JTracer struct {
OT opentracing.Tracer
OT opentracing.Tracer
OTEL trace.TracerProvider
}

func OT(t opentracing.Tracer) JTracer {
return JTracer{OT: t}
}

func OTEL(tp trace.TracerProvider) JTracer {
afzal442 marked this conversation as resolved.
Show resolved Hide resolved
return JTracer{OTEL: tp}
}

func NoOp() JTracer {
return JTracer{OT: opentracing.NoopTracer{}}
}

func NoOpOtel() JTracer {
afzal442 marked this conversation as resolved.
Show resolved Hide resolved
return JTracer{OTEL: trace.NewNoopTracerProvider()}

Check warning on line 48 in pkg/jtracer/jtracer.go

View check run for this annotation

Codecov / codecov/patch

pkg/jtracer/jtracer.go#L47-L48

Added lines #L47 - L48 were not covered by tests
}

func NewOTELProvider() (trace.TracerProvider, error) {
opts := []otlptracehttp.Option{otlptracehttp.WithInsecure()}
exporter, err := otlptrace.New(
context.Background(),
otlptracehttp.NewClient(opts...),
afzal442 marked this conversation as resolved.
Show resolved Hide resolved
)
if err != nil {
return nil, fmt.Errorf("failed to create exporter: %w", err)
}

Check warning on line 59 in pkg/jtracer/jtracer.go

View check run for this annotation

Codecov / codecov/patch

pkg/jtracer/jtracer.go#L51-L59

Added lines #L51 - L59 were not covered by tests

tracerProvider := sdktrace.NewTracerProvider(
sdktrace.WithBatcher(exporter),
sdktrace.WithSampler(sdktrace.AlwaysSample()),
afzal442 marked this conversation as resolved.
Show resolved Hide resolved
)

otel.SetTracerProvider(tracerProvider)
otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{}))
afzal442 marked this conversation as resolved.
Show resolved Hide resolved

return tracerProvider, nil

Check warning on line 69 in pkg/jtracer/jtracer.go

View check run for this annotation

Codecov / codecov/patch

pkg/jtracer/jtracer.go#L61-L69

Added lines #L61 - L69 were not covered by tests
}
10 changes: 9 additions & 1 deletion pkg/jtracer/jtracer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,21 @@ import (

"github.com/opentracing/opentracing-go"
"github.com/stretchr/testify/assert"
"go.opentelemetry.io/otel/trace"

"github.com/jaegertracing/jaeger/pkg/jtracer"
)

func TestOT(t *testing.T) {
mockTracer := opentracing.NoopTracer{}
jtracer := jtracer.OT(opentracing.NoopTracer{})
jtracer := jtracer.OT(mockTracer)

assert.Equal(t, mockTracer, jtracer.OT)
}

func TestOTEL(t *testing.T) {
mockTracer := trace.NewNoopTracerProvider()
jtracer := jtracer.OTEL(mockTracer)

assert.Equal(t, mockTracer, jtracer.OTEL)
}
29 changes: 17 additions & 12 deletions plugin/metrics/prometheus/metricsstore/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,16 @@ import (
"time"
"unicode"

"github.com/opentracing/opentracing-go"
afzal442 marked this conversation as resolved.
Show resolved Hide resolved
ottag "github.com/opentracing/opentracing-go/ext"
otlog "github.com/opentracing/opentracing-go/log"
"github.com/prometheus/client_golang/api"
promapi "github.com/prometheus/client_golang/api/prometheus/v1"
"go.opentelemetry.io/otel/attribute"
semconv "go.opentelemetry.io/otel/semconv/v1.20.0"
"go.opentelemetry.io/otel/trace"

"go.uber.org/zap"

"github.com/jaegertracing/jaeger/pkg/bearertoken"
"github.com/jaegertracing/jaeger/pkg/jtracer"
"github.com/jaegertracing/jaeger/pkg/prometheus/config"
"github.com/jaegertracing/jaeger/plugin/metrics/prometheus/metricsstore/dbmodel"
"github.com/jaegertracing/jaeger/proto-gen/api_v2/metrics"
Expand Down Expand Up @@ -225,7 +227,7 @@ func (m MetricsReader) executeQuery(ctx context.Context, p metricsQueryParams) (
promQuery := m.buildPromQuery(p)

span, ctx := startSpanForQuery(ctx, p.metricName, promQuery)
defer span.Finish()
defer span.End()

queryRange := promapi.Range{
Start: p.EndTime.Add(-1 * *p.Lookback),
Expand Down Expand Up @@ -287,17 +289,20 @@ func promqlDurationString(d *time.Duration) string {
return string(b)
}

func startSpanForQuery(ctx context.Context, metricName, query string) (opentracing.Span, context.Context) {
span, ctx := opentracing.StartSpanFromContext(ctx, metricName)
ottag.DBStatement.Set(span, query)
ottag.DBType.Set(span, "prometheus")
ottag.Component.Set(span, "promql")
func startSpanForQuery(ctx context.Context, metricName, query string) (trace.Span, context.Context) {
afzal442 marked this conversation as resolved.
Show resolved Hide resolved
tp, _ := jtracer.NewOTELProvider()
afzal442 marked this conversation as resolved.
Show resolved Hide resolved
ctx, span := tp.Tracer("").Start(ctx, metricName)
afzal442 marked this conversation as resolved.
Show resolved Hide resolved
span.SetAttributes(
attribute.Key(semconv.DBStatementKey).String(query),
attribute.Key("db.type").String("prometheus"),
attribute.Key("component").String("promql"),
)
return span, ctx
}

func logErrorToSpan(span opentracing.Span, err error) {
ottag.Error.Set(span, true)
span.LogFields(otlog.Error(err))
func logErrorToSpan(span trace.Span, err error) {
// span.SetStatus(codes.Error, semconv.OTelStatusCodeError.Value.AsString())
span.AddEvent(err.Error(), trace.WithAttributes(semconv.OTelStatusCodeError))
}

func getHTTPRoundTripper(c *config.Configuration, logger *zap.Logger) (rt http.RoundTripper, err error) {
Expand Down
Loading