-
-
Notifications
You must be signed in to change notification settings - Fork 198
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
[elixir] Performance powered by OTel #538
Comments
What does "Hub" for concurrency in Elixir look like? It looks to be a context store? Like how OpenTelemetry we use the process dictionary? Does this mean Sentry does no intend to adopt the OpenTelemetry API? Also, what is "opentelemetry based performance" mean here? Based on what I read of the SpanProcessor model it doesn't read like you'd be relying on the Otel SDK for span operations, so if you found performance better with OpenTelemetry I wouldn't be sure thats the case when combined with the SpanProcessor. But I don't yet fully understand what it is doing, so I may be wrong there :) |
something like that yea, basically the
not directly, we have our own Tracing model and Ingestion so we will only support OpenTelemetry indirectly via the
we'd rely on the Otel SDK for instrumenting and recording spans but we need to convert them to the Sentry model to be able to ingest and store them on our side, this is what the cc @smeubank for high-level product design discussion ^ |
Now I see, so the SpanProcessor updates a global store of SpanId->SentrySpan and then OnEnd will update that based on the finished OpenTelemetry Span. |
I'm not sure how to provide feedback on that, but we (at https://transport.data.gouv.fr) would be very interested to see performance monitoring supported for Elixir. |
For what is worth, the Ruby one seems to be done via OpenTelemetry: https://docs.sentry.io/platforms/ruby/performance/instrumentation/opentelemetry/ ? |
@josevalim I think it has both. And the OpenTelemetry option is awkward to implement -- uses a span processor to basically do a parallel tracking of spans. I don't know that there will be another option other than the processor though as long as Sentry requires the implementation to create Transactions. |
There is also a JS implementation using OpenTelemetry, indeed using a span processor. |
@tsloughter @josevalim we have an ongoing project to move away from our Transaction model gradually on the ingestion side, will keep this thread updated when we ship something production ready. |
Any update on this? |
@jwaldrip no, and we'll post updates if there are any, no worries! |
I will actually start writing a spec for it this week! |
oki, current status of sentry ingestion of otlp traces follows! Spec
Business concerns
Elixir SDK implications
I will start playing around with OpenTelemetry SDKs and exporters this week and update once ingestion works end-end. |
This was not released yet. See #538 (comment).
This was not released yet. See #538 (comment).
update: I will now test ingestion since this is in production. |
@sl0thentr0py lol this is fantastic news, I had already started working on the JSON export support 😄 |
Any progress on this. We would love to trace things back to our API. :-) |
Just checking in here. Our team is about to go down the distributing tracing route and we would love to use sentry. But we really cant afford to wait any longer for the feature to land. |
@jwaldrip hey Jason, I'm sorry it's taking so long. There are many moving pieces so it was a challenge to coordinate work. Coincidentally you asked about it on the same day when I got back to working on #853 PR! There's a rough high-level TODO there in the description. I'm currently in the process of revisiting updated opentelemetry deps and making sure that things work as expected. We're going to decide tomorrow how exactly we want to ship it, which parts will go first (most likely Phoenix/Ecto would be a high prio) and how we want to package it nicely so that it's a solid Sentry "works OOTB" experience with no friction 😄 You can watch progress on #853 for the time being. I'll give another update tomorrow with more details! |
Sentry Elixir SDK with OpenTelemetry SupportThis issue outlines the prioritized product feature requirements for the Sentry Elixir SDK to support OpenTelemetry under the hood. Breaking down the work into priority levels will help us ship iteratively and deliver value incrementally. P0 (Critical)
P1 (Must Have)
P2 (Should have)
Implementation Considerations
|
Alright I closed the other two PRs where discovery work took place but they were too big to review/merge. I've added #874 as a sub-issue here and started working on it under #875 which simply adds SpanProcessor and will be a much smaller and focused change. It covers the first item from the P0 requirements. |
@krainboltgreene so there are several things that would need to be done to get performance tracing working with
sentry-elixir
. This SDK was so far handled by the community so it is not on par with what we call our Unified API for making common abstractions across all Sentry SDKs.I will make 2 lists below, one of the bare minimum that would lead to quick opentelemetry based performance and the other more 'ideal' list where we make the SDK feature compatible in terms of performance with other SDKs.
Required
Envelope
abstraction to also be able to send items of typetransaction
.Transaction
andSpan
abstractions.SpanProcessor
andPropagator
to hook into opentelemetry.Optional
Hub
(for concurrency) andScope
abstractions but technically they can be ignored if a quick path to opentelemetry support is desired.I will make a new issue out of this to track it in
sentry-elixir
. Unfortunately, this is a non-trivial amount of development work, so I can't give you very clear cut instructions on how you can contribute, but feel free to try stuff out and make a PR if you're interested and we can collaborate.If there is sufficient interest from the community, we can also potentially prioritize me working on this as well next quarter.
Originally posted by @sl0thentr0py in getsentry/sentry#40712 (reply in thread)
Other notes
The text was updated successfully, but these errors were encountered: