-
Notifications
You must be signed in to change notification settings - Fork 0
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
Integrate Tracing (derived from OpenTelemetry) #15
Comments
It seems alot of the complexity is due to the vendors fragmentation and they are trying to make everything compatible. |
Most tracing tools like https://nodejs.org/api/tracing.html and I'm interested in more than just request-driven tracing but live infinite traces (call it continuous tracing that shows finished and live spans at the same time), and correlates them too. I'm guessing we need zoomable levels of detail the ability to filter out irrelevant information dynamically. Open telemetry in particular does not appear to emit a span until it is done. I'd imagine knowing when a span started even if it did not end yet would be useful for live continuous tracing. |
Why do parents span finish before child span ? Will this always be the case ? |
In case of our solution how should spans be structured in JSON ? |
The tracing goes from top to bottom, and represents an 'infinite' live visualisation of what the current state of the system is. Why do we need an 'infinite' live visualisation ? |
Are we visualising both completed and in-progress spans at the same time? If yes, how ? |
How does forking impact trace performance ? Will it slow down the system ? |
If we need zoomable levels of details to filter out information dynamically, how will be support this functionality ? |
Because that's how we can debug how object contexts exist in real time. |
Tracing isn't going to be super fast. It's fine, we do this for debug reasons - we can optimise this later. |
Zoom able is a UI concern. Tracing data is logged entirely. |
Let's separate issues for collecting data vs visualising data. |
Functional Requirements
Non Functional Requirements
|
I want to avoid any IO in or out tracing. Our library should be pure data structures first and then allow generic construction of a span. I don't like open tracing spans but we can be backwards compatible with it. |
See the 3 layer cake concept. |
Avoid Jaeger or any of the OT ecosystem. I don't like them they suck. |
Btw in-memory format should just be a POJO that can be converted to json. |
Create a span structure for beginning and end. Use react-ink to setup a CLI that visualised top to bottom. Get a preview of this using asciinema. And post the video here. |
I want you to try and write a simple library right here with a new PR:
|
@abhishek.mehta you need to link up your github account, at the moment assignments aren't aligned between github and linear. |
I have already started working on this; however, as I have reached my 24 hour limit for this week, I will be able to continue next week. Thanks |
Consider also using VictoriaLogs. Is is easier to setup and operate than Loki and Elasticsearch, and it usually uses less RAM, CPU and disk space comparing to Loki and Elasticsearch. |
Cool @valyala but this issue is more about specific in-app tracing that shouldn't be tied to any cloud service. We want to separate collection from visualisation from storage. |
@Abby010 the last paragraph is key. |
Preview of the CLI using react-ink |
What's the status? |
Status UpdateCurrent Progress:
Research Done:✔ Analyzed Next Steps:
Timeline:🎯 Targeting completion by the next sprint meeting - 10th March, 2025 Terminal 1: React-Ink Visualization
Terminal 2: Simple Tail-Style Output
Terminal 3: Test Script (
|
@abhishek.mehta you should start to write out the tasks in this issue. Plus your progress should be in the associated feature-branch PR. |
BTW your viz shows using |
Specification
OpenTelemetry is an overly complicated beast. It's far too complex to adopt into a logging system. However the basic principles of tracing makes sense. Here I'm showing how you can set one up for comparison testing, for us to derive a tracing schema and later visualise it ourselves or by passing it into an OTLP compatible visualiser.
The above command runs jaeger. Take note of 4318 port which is the OTLP protocol over HTTP.
Visit
localhost:16686
to be able to view the jaeger system.Then any example code, like for example https://github.com/open-telemetry/opentelemetry-js/blob/main/examples/basic-tracer-node/index.js can run and push traces directly to the docker container.
What is frustrating is:
console.log
and produce pretty printed results that are not actual JSON. Thus you cannot just pipe it to a relevant location.The plan:
Additional context
Tasks
The text was updated successfully, but these errors were encountered: