This is an example on how OpenTelemetry can be set up using Jaeger on ASP.NET Core
- Uses envoy proxy as ingress gateway
- Uses MassTransit and RabbitMQ as for messaging
- Traces are correlated end-to-end using JaegerPropagator
docker-compose up -d --build
Jaeger: http://localhost:16686
RabbitMq: http://localhost:15672 (guest/guest)
Telemetry Web Swagger (through Envoy proxy): http://localhost:10000/swagger/index.html
Monitoring service logs:
docker logs -f telemetry_web
docker logs -f telemetry_worker
docker logs -f envoy_proxy
Jaeger client libraries ensure traces are always complete (includes all services end-to-end). Sampling decisions are propegated through service executions
On envoy/front-envoy-jaeger.yaml
configure the sampler
See the Jaeger docs
100%:
sampler:
type: const
param: 1
10%:
sampler:
type: probabilistic
param: 0.1
2 requests per second:
sampler:
type: ratelimiting
param: 2.0