Introduce load-balanced channel for OpenTelemetry exporters#2175
Introduce load-balanced channel for OpenTelemetry exporters#2175dkostyrev wants to merge 1 commit intoTraceMachina:mainfrom
Conversation
eb9bfe9 to
b86f6d1
Compare
b86f6d1 to
9533feb
Compare
9533feb to
6406230
Compare
|
@dkostyrev Than you for this awesome PR. I have finally had a bit of time to explore it and now I understand quite a bit. This is fantastic. |
|
@amankrx when you get a chance, please help with the merge conflict here. |
| .block_on(async { | ||
| // The OTLP exporters need to run in a Tokio context. | ||
| spawn!("init tracing", async { init_tracing() }) | ||
| spawn!("init tracing", async { init_tracing().await }) |
|
That coverage issue is interesting. |
29cb3d7 to
dff32cd
Compare
31d41d4 to
892ecee
Compare
892ecee to
1eb7f46
Compare
|
This is looking good. |
|
Thanks for the review, still trying to pass failed CI checks |
|
I think this is actually hitting https://users.rust-lang.org/t/undefined-reference-to-memcpy-chk-with-target-x86-64-unknown-linux-musl/113567 as it's building a linked zstd, not the vendored one. Upstream has a PR that would sort this out, and I've just prodded them on that. |
|
@dkostyrev do you want help here? |
f322ac7 to
b8d6683
Compare
b8d6683 to
2bdfd7c
Compare
|
@MarcusSorealheis I've reverted opentelemetry update, I think that the coverage should pass now |
|
I managed to break our attic caching. Rebasing on main should fix at least most of these failures |
Add client-side load balancing to OTLP gRPC connections using ginepro. When NL_OTEL_ENDPOINT is set, the telemetry system creates a load-balanced channel shared across log, trace, and metric exporters. This enables better distribution of telemetry traffic across multiple OTLP collector instances and improves overall system resilience. - Add ginepro dependency for gRPC load balancing - Upgrade OpenTelemetry dependencies from 0.29 to 0.30 - Change init_tracing() to async to support channel initialization - Add NL_OTEL_ENDPOINT environment variable for configuration - Update all OTLP exporters to use shared load-balanced channel # Conflicts: # Cargo.lock
2bdfd7c to
ac3d375
Compare
|
I've rebased the branch, CI is passing now |
Summary
This PR introduces client-side load balancing for OpenTelemetry (OTLP) gRPC connections using the ginepro library. When the
NL_OTEL_ENDPOINT(name to be discussed, maybe boolean flag?) environment variable is set, NativeLink will create a load-balanced channel for exporting logs, traces, and metrics, distributing requests across multiple backend endpoints resolved via DNS. This change allows to distribute OTLP traffic across multiple OTLP collector instances.Changes
Load-balanced OTLP exports:
gineprodependency to provide client-side load balancing for gRPC channels used by OpenTelemetry exportersNL_OTEL_ENDPOINTenvironment variable to configure the OTLP endpoint for load-balanced connectionsinit_tracing()from synchronous to async to support balanced channel initializationThis change is