-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Support for sending OpenTelemetry Tracing over HTTP/Protobuf endpoint #26352
Comments
Just to clarify, the title refers to Tracing, but the Fluent Bit story refers to Logging - @dceravigupta which one are you referring to (or is it both)? |
@itamarkam, right now I'm looking for Tracing but once I get that working I will also like to use Envoy OTel based access logs, so to answer your question, I was referring to kind both. Also, on the Fluent Bit OTel plugin page, it says that it has stable support for both Traces and Logs over HTTP/Protobuf endpoint. |
I'm not familiar enough with Envoy Tracing (@AlexanderEllis is), but for Access Logs we used the existing Envoy grpc access logging infrastructure and tweaked it to send OTel. AFAICT there's no existing HTTP access logging in Envoy. |
For tracing, there was already some discussion around adding an OTLP/HTTP implementation (#9958 (comment)) — I think this would be a good improvement to the tracer, and it shouldn't be to onerous to add. @esigo had mentioned some interest in pursuing this, but if they don't have the cycles we can always load balance to someone else that's interested 👍 |
There's an OTLP/HTTP exporter in OpenTelemetry C++ and it might be possible to borrow from that one for the Envoy implementation: |
Took a stab at adding this, and I think it should be pretty doable to integrate with the existing tracer. The changes look roughly like the following:
You can preview the very rough changes here, though they still need tests (and definitely a proper code review!) So far I have a basic exporting setup (Envoy with a Nighthawk cluster, exporting to the OpenTelemetry collector) with the following config for the new HTTP exporting (note the 4318 port on the collector):
Looks like the spans came through to the collector (the
I still need to write some tests for it, but hopefully should have a PR in good shape pretty soon 👍 |
@AlexanderEllis I would be happy to collaborate and help with it however I can. Feel free to reach out here or tag me on the PR for reviews. One thing I missed in the changes you linked is (disregard if you already worked on it in the meantime) a way to configure HTTP headers. Several back-ends use the |
Hi @AlexanderEllis, sorry for nagging, but I'm interested in getting this feature in, so please let me know how I can help! If you don't have cycles to work on it, I'd be happy to take over. Let me know your thoughts. Thanks! |
Hey @joaopgrassi , no problem at all, thanks for keeping me honest! Sorry for the delay here — was away and busy for the last few weeks. I wrapped up a bit of the metrics and testing, and I created a draft PR for us to look at (and to run all of the tests that I'll probably have to iterate on). For the HTTP headers — I don't think I saw this in the other tracers, but I think something like that would make a lot of sense. Would that be best placed in the upstream_http_protocol_options for the OpenTelemetry collector cluster? E.g. in a header mutation append config. I must admit I'm very rusty on my Envoy best practices, so I'd definitely defer to the experts on this one. |
Hi @AlexanderEllis ! No problem! Awesome, I will take a look at the PR! About the HTTP headers, I'm a beginner in Envoy but I looked at some of the other "tracers" available, and https://github.com/envoyproxy/envoy/blob/main/source/extensions/tracers/datadog/agent_http_client.cc#L54 this one also sends via HTTP and it seems configures HTTP headers. I did not find yet how those are passed down/configured though. |
Title: Support for sending OpenTelemetry Tracing over HTTP/Protobuf endpoint
Description:
[optional Relevant Links:]
The text was updated successfully, but these errors were encountered: