ethercrow / opentelemetry-haskell

The OpenTelemetry Haskell Client https://opentelemetry.io
Other
65 stars 6 forks source link

Implement the context propagation using environment variables #14

Open ethercrow opened 4 years ago

ethercrow commented 4 years ago

When a service A calls service B, it's common practice to put the trace and span ids into HTTP headers so that in the visualizer you can see spans of B as children of spans of A.

The idea is to do the similar thing when a program A calls program B as a subprocess. For example, stack or ghcide calls ghc and sets an environment variable "OPENTELEMETRY_CONTEXT=ot--". The callee would inspect the environment variables on startup and be aware of the trace id and parent span id. After we upload both eventlogs, we'll see spans of both programs participating in the same trace.

yaitskov commented 4 years ago

@ethercrow , Note. I haven't found where OPENTELEMETRY_CONTEXT is used in stack/ghcide, but in python project they read from that var 1 of 2 constants, not strings like "ot-fffa23432-bedc38383" https://opentelemetry-python.readthedocs.io/en/stable/_modules/opentelemetry/context.html

yaitskov commented 4 years ago

@ethercrow ,

I think the following hypothetical GHC feature would solve all problems related to this ticket

https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3382