HNHacker News
TopNewBestAskShowJobs

edenfed

223 karma · joined November 12, 2016

CTO at Odigos (YC W23)
submissionscomments
edenfed··on Show HN: Coroot – eBPF-based, open source observability with actionable insights
Speaking for Odigos (disclosure: I’m the creator), here are two significant differences between us and the other mentioned players:

- Accurate distributed traces with eBPF, including context propagation. Without going into other tools, I highly recommend trying to generate distributed traces using any other eBPF solution and observing the results firsthand.

- We are agent-only. Our data is produced in OpenTelemetry format, allowing you to integrate it seamlessly with your existing observability system.

I hope this clarifies the differences.

edenfed··on I got OpenTelemetry to work. But why was it so complicated?
Definitely can relate, this is why I started an open-source project that focus on making OpenTelemetry adoption as easy as running a single command line: https://github.com/odigos-io/odigos
edenfed··on The problem with OpenTelemetry
You can absolutely use just the OTel APIs and use something else besides the OTel SDK. Here is a blog post about how we did it with eBPF: https://odigos.io/blog/Integrating-manual-and-auto
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
Interesting idea. I think that as long as you able to do processing, serializing and delivery in other process and save this work from your application runtime you should see great performance
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
By dropped data do you mean by exceeding the size of the allocated ring buffer/perf buffer? If so this is configurable by the user, so you can adjust is according to the expected load
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
You can enrich the spans created by eBPF by using OpenTelemetry APIs as usual, the eBPF instrumentation is a replacement for the instrumentation SDK. The eBPF program will detect the data recorded via the APIs and will add it to the final trace combining both automatic and manually created data.
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
I don’t have a lot of experience using dtrace, but AFAIK the big advantage of eBPF over dtrace is that you do not need to instrument your application with static probes during coding.
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
Thank you for reporting will fix ASAP
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
We already solved compiled languages (Go, C, Rust) and JIT languages (Java, C#). Interpreted languages (Python, JS) are the only ones left, hopefully we will solve these as well soon. The big challenge is supporting all the different runtimes, once that is solved implementing support for different protocols / open-source libraries is not as complicated.
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
We have a solution for virtual thread as well. Currently working on a blog post describing exactly how. Will update once releases
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
eBPF instrumentation does not require code changes, redeployment or restart to running applications.

We are constantly adding more language support for eBPF instrumentation and are aiming to cover the most popular programming languages soon.

Btw, not sure that sampling is really the solution to combat overhead, after all you probably do want that data. Trying to fix production issue when the data you need is missing due to sampling is not fun

edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
We are currently supporting just Kubernetes environments. docker-compose, VMs, and Serverless are on our roadmap and will be ready soon
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
We also thinking on implementing fallback mechanism to automatically propagate context on the same goroutine if context.Context is not passed
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
Thanks for the valuable feedback! We used a constant throughout of 10,000 rps. The exact testing setup can be found under “how we tested”.

I think the example you gave for the lock used by Prometheus library is a great example why generation of traces/metrics is a great fit for offloading to different process (an agent).

Patchyderm looks very interesting however I am not sure how you can generate distributed traces based on metrics, how do you fill in the missing context propagation?

Our way to deal with eBPF root requirements is to be transparent as possible. This is why we donated the code to the CNCF and developing as part of the OpenTelemetry community. We hope that being open will make users trust us. You can see the relevant code here: https://github.com/open-telemetry/opentelemetry-go-instrumen...

edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
I recommend watching Gil Tene’s talk, I think he explains the math better than I do: https://www.youtube.com/watch?v=lJ8ydIuPFeU
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
Logs are easy and familiar API for adding additional data to your traces. They still have their place, Odigos is just adding much more context.
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
Nothing special, if you are working on Kubernetes its as easy as running `odigos install` CLI and pointing to your current monitoring system.
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
I think eBPF has also great potential to help JVM-based languages. Especially around performance aspects even comparing to the current java agents which use bytecode manipulation.
edenfed··on eBPF-based auto-instrumentation outperforms manual instrumentation
It depends on the programming language being instrumented. For Go we are assuming the context.Context object is passed around between different functions or goroutines. For Java, we are using a combination of ThreadLocal tracing and Runnable tracing to support use cases like reactive and multithreaded applications.
edenfed··on OpenTelemetry in 2023
Can you try again please? It works well for me
edenfed··on OpenTelemetry in 2023
Disclaimer: I am one of the maintainers

Many comments complain about the complexity of using OpenTelemetry, I recommend checking out Odigos, an open-source project which makes working with OpenTelemetry much easier: https://github.com/keyval-dev/odigos

We combine OpenTelemetry and eBPF to instantly generate distributed traces without any code changes.

edenfed··on Show HN: OpenObserve – Elasticsearch/Datadog alternative
Hi SergeAx, I am building Odigos, which do exactly what you asked :) We combine OpenTelemetry and eBPF to automatically generate and deliver distributed traces, metrics and logs to Grafana, DataDog and other 15+ destinations. Check it out here: https://github.com/keyval-dev/odigos
edenfed··on Extending Containers with Kubernetes Device Plugin
Author here. This is a big step of our vision where automatic instrumentation becomes part of the underlying infrastructure / platform.
edenfed··on Show HN: Odigos (YC W23) – Instant distributed tracing for Kubernetes clusters
Hi HN, Ari & Eden, founders of Odigos here. Super excited to introduce version v0.1.4 of Odigos, our open source project. We have been hard at work adding new features that include support for ARM processors (latest Macbooks/AWS Graviton), new destinations as well as major stability improvements

Read more about this release in our blog: https://keyval.dev/version-v0-1-4/

Interested in contributing to Odigos? Check out our open Github Issues: https://github.com/keyval-dev/odigos/issues?q=is%3Aissue+is%...

Let us know what you think!

edenfed··on Launch HN: Odigos (YC W23) – Instant distributed tracing for Kubernetes clusters
This is not a requirement, sorry for the misleading documentation. We just rewritten everything and this bullet is probably a leftover from previous version of the docs. fixing it now.
edenfed··on Launch HN: Odigos (YC W23) – Instant distributed tracing for Kubernetes clusters
Not yet, but hopefully soon. Thank you for the feedback!
edenfed··on Launch HN: Odigos (YC W23) – Instant distributed tracing for Kubernetes clusters
Thank you for the feedback! We believe a lot of innovation can happen with distributed traces, and Odigos is just the beginning
edenfed··on Launch HN: Odigos (YC W23) – Instant distributed tracing for Kubernetes clusters
Thank you! Yes, we are working on adding enterprise features.
edenfed··on Launch HN: Odigos (YC W23) – Instant distributed tracing for Kubernetes clusters
Definitely. Nomad is probably the first environment we are going to support after Kubernetes
edenfed··on Launch HN: Odigos (YC W23) – Instant distributed tracing for Kubernetes clusters
Not yet, but i can setup some custom docker compose yaml for you depending on the programming language you are using
Page 1 of 2Next →