Kirk Haines
@wyhaines everywhere
OpenTelemetry focuses on three telemetry signals
(signal == category of telemetry data defined by the specification)
Tracing records code execution paths within an application
Tracing records code execution paths within an application
METHOD_A
Tracing records code execution paths within an application
METHOD_A
Span
==
Tracing records code execution paths within an application
METHOD_A METHOD_B
child
Tracing records code execution paths within an application
METHOD_A METHOD_B METHOD_C
child
child
Tracing records code execution paths within an application
METHOD_A METHOD_B METHOD_C METHOD_D
child
child
child
What happens in a complex execution path, such as a multiservice architecture involving microservices or serverless execution paths?
How does that work?
All Spans in a Trace have Context
Additionally, Spans have a parent_span_id
W3C Trace Context
https://www.w3.org/TR/trace-context/
Specification describing a standard way to pass context to another service
Two HTTP headers
W3C Trace Context
https://www.w3.org/TR/trace-context/
traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
W3C Trace Context
https://www.w3.org/TR/trace-context/
traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
VERSION == 00
W3C Trace Context
https://www.w3.org/TR/trace-context/
traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
VERSION == 00
TRACE_ID == 0af7651916cd43dd8448eb211c80319c
W3C Trace Context
https://www.w3.org/TR/trace-context/
traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
VERSION == 00
TRACE_ID == 0af7651916cd43dd8448eb211c80319c
PARENT_ID == b7ad6b7169203331
W3C Trace Context
https://www.w3.org/TR/trace-context/
traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
VERSION == 00
TRACE_ID == 0af7651916cd43dd8448eb211c80319c
PARENT_ID == b7ad6b7169203331
TRACE_FLAGS == 01 (* only one bit, for SAMPLED_FLAG, is currently used)
W3C Trace Context
https://www.w3.org/TR/trace-context/
tracestate: foo=bar,this=that
But Distributed Tracing is pretty straightforward
But Distributed Tracing is pretty straightforward
HTTP (traceparent: context)
HTTP (traceparent: context)
Microservice A
Microservice B
Process