Skip to content

rkarg-blizz/dotnet-otel-proxy

 
 

Repository files navigation

.NET OpenTelemetry Proxy

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.

Anatomy of a tracing proxy

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.

Overview of the sampling proxy

Protobuf usage

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.

Generating OpenTelemetry Protobuf For the tests

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 99.7%
  • Dockerfile 0.3%