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

Upgrade HotROD example to use OpenTelemetry SDK #3380

Closed
7 tasks done
Tracked by #3362
yurishkuro opened this issue Nov 8, 2021 · 6 comments · Fixed by #4187 or #4790
Closed
7 tasks done
Tracked by #3362

Upgrade HotROD example to use OpenTelemetry SDK #3380

yurishkuro opened this issue Nov 8, 2021 · 6 comments · Fixed by #4187 or #4790
Labels
help wanted Features that maintainers are willing to accept but do not have cycles to implement

Comments

@yurishkuro
Copy link
Member

yurishkuro commented Nov 8, 2021

Per #3362

  • replace Jaeger SDK with OTEL SDK using an OT Bridge
  • replace OT instrumentation with OpenTelemetry
  • Remove references to OpenTracing API
  • Remove Jaeger exporter, leave only OTLP, and update README and docker-compose
@yurishkuro yurishkuro added the help wanted Features that maintainers are willing to accept but do not have cycles to implement label Nov 8, 2021
@rbroggi
Copy link
Contributor

rbroggi commented Nov 8, 2021

Will try to work on that during the next weekend.

@rbroggi
Copy link
Contributor

rbroggi commented Nov 11, 2021

Before jumping right into the code I have been studying the opentelemetry go API. Given that the notion of logs is not complete in opentelemetry yet but is something used in Jaeger, I wanted to make sure we have a strategy to migrate what is currently 'logged' in HotROD to what in opentelemetry is called an 'Event'. Is this a good understanding? The only other option in open telemetry is to use Attributes (key-value) which are what in jaeger-client we call Tags.

in the article there is also a section that describes the difference between tags vs Logs.

@yurishkuro
Copy link
Member Author

Let me clarify - at this time our intention is not to upgrade everything to OTEL API, but keep OT instrumentation and use OT-to-OTEL bridge to replace Jaeger SDK with OTEL SDK. Therefore your question is not relevant because that decision will be made by the bridge.

@rbroggi
Copy link
Contributor

rbroggi commented Nov 11, 2021

Let me clarify - at this time our intention is not to upgrade everything to OTEL API, but keep OT instrumentation and use OT-to-OTEL bridge to replace Jaeger SDK with OTEL SDK. Therefore your question is not relevant because that decision will be made by the bridge.

Copy that! I'm glad I asked the question! 😄

yurishkuro added a commit that referenced this issue Jan 29, 2023
Based on earlier PR #3390 by @rbroggi. 

## Which problem is this PR solving?
- Resolves #3380

## Short description of the changes
- Switch from jaeger-client-go SDK to OTel SDK paired with ot-otel
bridge
- Add cli flag to select which Otel Exporter to use (Jaeger, OTLP or
stdout)
- Add favicon 🚗
- Added OTEL version of rpcmetrics from jaeger-client-go
- Remove dependency on github.com/uber/jaeger-lib in HotROD (addresses
one of outstanding tasks in #3766)

---------

Signed-off-by: rbroggi <ro_broggi@hotmail.com>
Signed-off-by: Yuri Shkuro <github@ysh.us>
Co-authored-by: rbroggi <ro_broggi@hotmail.com>
shubbham1215 pushed a commit to shubbham1215/jaeger that referenced this issue Feb 22, 2023
Based on earlier PR jaegertracing#3390 by @rbroggi. 

## Which problem is this PR solving?
- Resolves jaegertracing#3380

## Short description of the changes
- Switch from jaeger-client-go SDK to OTel SDK paired with ot-otel
bridge
- Add cli flag to select which Otel Exporter to use (Jaeger, OTLP or
stdout)
- Add favicon 🚗
- Added OTEL version of rpcmetrics from jaeger-client-go
- Remove dependency on github.com/uber/jaeger-lib in HotROD (addresses
one of outstanding tasks in jaegertracing#3766)

---------

Signed-off-by: rbroggi <ro_broggi@hotmail.com>
Signed-off-by: Yuri Shkuro <github@ysh.us>
Co-authored-by: rbroggi <ro_broggi@hotmail.com>
shubbham1215 pushed a commit to shubbham1215/jaeger that referenced this issue Mar 5, 2023
Based on earlier PR jaegertracing#3390 by @rbroggi.

## Which problem is this PR solving?
- Resolves jaegertracing#3380

## Short description of the changes
- Switch from jaeger-client-go SDK to OTel SDK paired with ot-otel
bridge
- Add cli flag to select which Otel Exporter to use (Jaeger, OTLP or
stdout)
- Add favicon 🚗
- Added OTEL version of rpcmetrics from jaeger-client-go
- Remove dependency on github.com/uber/jaeger-lib in HotROD (addresses
one of outstanding tasks in jaegertracing#3766)

---------

Signed-off-by: rbroggi <ro_broggi@hotmail.com>
Signed-off-by: Yuri Shkuro <github@ysh.us>
Co-authored-by: rbroggi <ro_broggi@hotmail.com>
Signed-off-by: shubbham1215 <sawaikershubham@gmail.com>
yurishkuro pushed a commit that referenced this issue Jun 20, 2023
## Which problem is this PR solving?

Related to #3380 
Part of #3381 

- This adds `OTEL tracerProvider` and removes `OT tracer` for Redis
service hotROD app

Before:

![r2](https://github.com/jaegertracing/jaeger/assets/11625672/446d03b9-2da0-47b2-9312-b8bc86c7e78a)


After:

![r1](https://github.com/jaegertracing/jaeger/assets/11625672/ed3f2ca6-7a01-4ab2-a13c-56c1f3388fe6)

---------

Signed-off-by: afzal442 <afzal442@gmail.com>
Co-authored-by: Afzal <94980910+afzalbin64@users.noreply.github.com>
kjschnei001 pushed a commit to kjschnei001/jaeger that referenced this issue Jun 29, 2023
## Which problem is this PR solving?

Related to jaegertracing#3380
Part of jaegertracing#3381

- This adds `OTEL tracerProvider` and removes `OT tracer` for Redis
service hotROD app

Before:

![r2](https://github.com/jaegertracing/jaeger/assets/11625672/446d03b9-2da0-47b2-9312-b8bc86c7e78a)

After:

![r1](https://github.com/jaegertracing/jaeger/assets/11625672/ed3f2ca6-7a01-4ab2-a13c-56c1f3388fe6)

---------

Signed-off-by: afzal442 <afzal442@gmail.com>
Co-authored-by: Afzal <94980910+afzalbin64@users.noreply.github.com>
Signed-off-by: KevinSchneider <kevin.schneider@target.com>
yurishkuro pushed a commit that referenced this issue Jul 2, 2023
## Which problem is this PR solving?
Related to #3380
Part of #3381

## Short description of the changes
- This PR adds OTEL instrumentation to customer svc

---------

Signed-off-by: Afzal Ansari <afzal442@gmail.com>
yurishkuro added a commit that referenced this issue Jul 6, 2023
## Which problem is this PR solving?
- Part of #3380

## Short description of the changes
- Move explicit baggage access into a util func that checks both OT and
OTEL baggage. Later the OT part can be retired completely.
- Update usage sites to use the new function instead of OT
`Span.BaggageItem`

A couple of less related changes in `tracing/mutex.go`:
- Use OTEL Span API instead of OT
- Replace direct-to-span logging with the regular logger that logs both
to stdout and to the span

Signed-off-by: Yuri Shkuro <github@ysh.us>
afzal442 added a commit to Cloud-Hacks/jaeger that referenced this issue Jul 10, 2023
## Which problem is this PR solving?
Related to jaegertracing#3380
Part of jaegertracing#3381

## Short description of the changes
- This PR adds OTEL instrumentation to customer svc

---------

Signed-off-by: Afzal Ansari <afzal442@gmail.com>
afzal442 pushed a commit to Cloud-Hacks/jaeger that referenced this issue Jul 10, 2023
## Which problem is this PR solving?
- Part of jaegertracing#3380

## Short description of the changes
- Move explicit baggage access into a util func that checks both OT and
OTEL baggage. Later the OT part can be retired completely.
- Update usage sites to use the new function instead of OT
`Span.BaggageItem`

A couple of less related changes in `tracing/mutex.go`:
- Use OTEL Span API instead of OT
- Replace direct-to-span logging with the regular logger that logs both
to stdout and to the span

Signed-off-by: Yuri Shkuro <github@ysh.us>
Signed-off-by: Afzal Ansari <afzal442@gmail.com>
yurishkuro pushed a commit that referenced this issue Jul 15, 2023
## Which problem is this PR solving?
* Part of #3380
* This PR tries to instrument the hotROD app with otel downgrading
opentracing. Related
#4533 (comment)

## Short description of the changes
- Upgrades hotROD application to support `otel tracer`

---------

Signed-off-by: Afzal Ansari <afzal442@gmail.com>
Signed-off-by: afzal442 <afzal442@gmail.com>
Signed-off-by: Afzal <94980910+afzalbin64@users.noreply.github.com>
Co-authored-by: Afzal <94980910+afzalbin64@users.noreply.github.com>
@yurishkuro yurishkuro reopened this Jul 16, 2023
@yurishkuro
Copy link
Member Author

getting close to completing this

yurishkuro added a commit that referenced this issue Jul 16, 2023
## Which problem is this PR solving?
- Part of #3380

Signed-off-by: Yuri Shkuro <github@ysh.us>
yurishkuro added a commit that referenced this issue Jul 16, 2023
## Which problem is this PR solving?
Since the HotROD UI does not start traces, it can only search for a
trace corresponding to a particular request by some span tags. This
makes the experience of opening a trace a big clunky as we first see the
search page with one trace, and then have to click on the trace again.

Related to #3380

## Short description of the changes
Change the HTTP instrumentation to always generate a `traceresponse`
header per the [current W3C
draft](https://github.com/w3c/trace-context/blob/main/spec/21-http_response_header_format.md).
Then parse the trace ID from that header in the UI and generate a
hyperlink to open the trace view directly, bypassing the search.

---------

Signed-off-by: Yuri Shkuro <github@ysh.us>
@yurishkuro
Copy link
Member Author

The only remaining references to opentracing are in documentation files, still need to clean them up:

./README.md:71:### Native support for OpenTracing
./README.md:73:Jaeger backend, Web UI, and instrumentation libraries have been designed from the ground up to support the [OpenTracing standard](https://opentracing.io/specification/).
./README.md:74:  * Represent traces as directed acyclic graphs (not just trees) via [span references](https://github.com/opentracing/specification/blob/master/specification.md#references-between-spans)
./README.md:82:The OpenTracing and OpenCensus projects have merged into a new CNCF project...
./CONTRIBUTING.md:103:      hotrod/               - Demo application that uses OpenTracing API
./examples/hotrod/README.md:6:  * as a blog post [Take OpenTracing for a HotROD ride][hotrod-tutorial],
./examples/hotrod/README.md:90:[hotrod-tutorial]: https://medium.com/@YuriShkuro/take-opentracing-for-a-hotrod-ride-f6e3141f7941
./examples/opentracing-tutorial/README.md:1:# OpenTracing Instrumentation Tutorial
./examples/opentracing-tutorial/README.md:3:To learn how to instrument your own applications for distributed tracing with Jaeger and OpenTracing API,
./examples/opentracing-tutorial/README.md:4:please see https://github.com/yurishkuro/opentracing-tutorial/.
./docker-compose/monitor/grafana.ini:1025:# Opentracing is deprecated use opentelemetry instead

yurishkuro added a commit that referenced this issue Sep 28, 2023
Resolves #3380

Signed-off-by: Yuri Shkuro <github@ysh.us>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Features that maintainers are willing to accept but do not have cycles to implement
Projects
None yet
2 participants