/practical-opentelemetry

Make OpenTelemetry works on .NET Core with features such as tracing, logs and metrics on multiple protocols like HTTP/gRPC/UDP/TCP...

Primary LanguageC#MIT LicenseMIT

Opentelemetry Experiment with .NET Core 3.x

OpenTelemetry Badge

This is a demo to show how to use OpenTelemetry for tracing on multiple services with multi-protocols on .NET Core 3.x

Demo scenario

  1. Web API (REST) - http://localhost:5000
  2. WeatherService (gRPC) - http://localhost:5002
  3. ProductService (REST) - http://localhost:5001
  4. MeteoriteService (gRPC) - http://localhost:5003

Step 1:

$ docker-compose up

Step 2:

Then run 3 projects above with Visual Studio or Visual Code

Step 3: Run Web API with url as below

http://localhost:/WeatherForecast

Jaeger UI

REST -> gRPC -> REST

http://localhost:16686

Zipkin UI

REST -> gRPC -> REST

http://localhost:9412

Trace from SampleWeb to MeteoriteService and to Remote URL at https://data.nasa.gov/resource/y77d-th95.json

Trace with error on the consumer side

Prometheus - Grafana

Healthcheck with Prometheus

Monotoring .NET resource with Grafana

Loki - Grafana

http://localhost:3000

Type {app="sample-web", level="information"} \d{1,9}ms on Log labels

Seq UI

http://localhost:5340