tracing: Add OpenTelemetry implementation
This MR adds an OpenTelemetry (OTEL) implementation for distributed tracing. It does so by trying to be less intrusive as possible and to maintain compatibility with existing OpenTracing implementations.
OpenTracing has been deprecated for a couple years now in favour of OTEL. With OTEL the new standard, pretty much all major tracing backends now supports this protocol. In our case, all our current supported implementation could be replaced with OTEL (datadog
, stackdriver
and lightstep
all supports OTEL protocol). This mean we could drop support for multiple implementations and only maintain the OTEL one. The only difference between those backend would be the configuration to communicate with the said backend.
However, as a first step, this commit introduces the OTEL implementation within the same current structure to minimize friction. That explains why the same connection_string
configuration format has been used.
Related issues: gitaly#4329