OpenTracing : Theory & Practice
V.N. Nikhil Anurag
Brief Overview
TracerContext
Live Coding
Brief Overview
TracerContext
Live Demo
Brief Overview
Root Span
Incoming Request
Child Spans
...
Child Spans
Root Span
Outgoing Response
Service
Brief Overview
TraceContext
Live Coding
TracerContext
# Steps to create Root Span
* Extract HTTP Headers from request.
* Create SpanContext from HTTP Headers, if available.
* Extract FlowId, if applicable.
* Create SpanBuilder with relevant tags.
* Build Root Span from SpanBuilder and SpanContext (FINALLY!)
* Tag Root Span with relevant info.
# Steps to use a Span
* Execute code using new span as child of root/parent span.
* Execute code using current span.
* Remember to close a span (Important!)
* Log info on current Span.
* Log Error on current Span with special tags and proper formatting.
TracerContext
trait TracerContext {
def withChildSpan(spanName, additionalTags): Resource[IO, TracerContext]
def withCurrentSpan(additionalTags): Resource[IO, TracerContext]
def logToSpan(msg): IO[TracerContext]
def logErrorOnSpan(err): IO[Unit]
def closeSpan(span): IO[Unit]
}
trait TracerContextObject {
def createSpanBuilder(spanName, tags, tracer): IO[SpanBuilder]
def build(flowId, spanName, tracer, tags): IO[TracerContext]
def tagSpan(spanBuilder, tags): IO[SpanBuilder]
def extractFrom(headers, rootSpanName, tracer): IO[TracerContext]
def trySpanCtxExtraction(adapter, tracer): IO[Option[SpanContext]]
}
Brief Overview
TracerContext
Live Coding
Live Coding (Setup)
-
Source Code @
https://github.com/last-ent/http4s-opentracing
-
Jaeger Executables @
https://www.jaegertracing.io/download/
Live Coding (Oops!)
You should've seen...
OpenTracing : Theory & Practice
Questions?
Feedback?
OpenTracing: Theory & Practice
By last-ent
OpenTracing: Theory & Practice
- 779