This is a proxy for OpenTelemetry Protocol data written in .NET. This is a demo project for my twitch stream at https://twitch.tv/MartinDotNet
The overall goal is to understand how hard Tail-Based sampling is, and try out some new tools too. Some of the things on my list.
A tracing proxy has a few separate components that make it work, and this is what the project is aiming to build out so that we can see the challenges presented by each component. It looks a little like this.
The Proxy uses the opentelemetry-protobuf definitons as it's core. This is brought in through a submodule, and they're autogenerated for the API contract, and the export contract.
The tests use a statically generated and committed protobuf. This is so that the inbound requests to the proxy will always use a defined version, rather than uses the same source as the proxy itself. This way, we can ensure that even if the underlying protobuf definitions fail, the tests are sending the older versions that clients would use.
Run the following commands in the root to generate new protobuf definitons for the tests.
git submodule update --init --recursive
protogen --proto_path=opentelemetry-proto/ --csharp_out=tests/Otel.Proxy.Tests/ **/*.proto