juraci paixão kröhling - developermarch · juraci paixão kröhling software engineer great...

23

Upload: others

Post on 20-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing
Page 2: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

Juraci Paixão KröhlingSoftware EngineerGreat International Developer Summit2019-04-25

Advanced Distributed Tracing

Page 3: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

CONTEXT

DISTRIBUTED SYSTEMSSUCH AS MICROSERVICES

OBSERVABILITYCOMPLEMENTS METRICS, LOGS, ...

Page 4: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

BASICS

MEASURES UNITS OF WORKWHEN DID IT START, HOW LONG IT TOOK AND OTHER METADATA

CAUSALITYREFERENCES BETWEEN UNITS OF WORK

CONTEXT PROPAGATIONSIMILAR TO THE CONCEPT OF “CORRELATION ID”

Page 5: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

BASICS

INSTRUMENTATION“WHAT” TO RECORD

TRACER“HOW” TO RECORD

SAMPLING“WHEN” TO RECORD

Page 6: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

BASICS

Page 7: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

BASICS

Page 8: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

AVAILABLE TOOLS

INSTRUMENTATIONOPENTRACING, OPENCENSUS, BRAVE, AWS X-RAY, ...

TRACERJAEGER, OPENCENSUS, BRAVE, HAYSTACK, SKYWALKING, AWS X-RAY, ...

BACKEND+UIJAEGER, ZIPKIN, HAYSTACK, SKYWALKING, STACKDRIVER, AWS X-RAY, ...

Page 9: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

AVAILABLE TOOLS

INSTRUMENTATIONOPENTRACING, OPENCENSUS, BRAVE, AWS X-RAY, ...

TRACERJAEGER, OPENCENSUS, BRAVE, HAYSTACK, SKYWALKING, AWS X-RAY, ...

BACKEND+UIJAEGER, ZIPKIN, HAYSTACK, SKYWALKING, STACKDRIVER, AWS X-RAY, ...

Page 10: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

LIVE CODING

Page 11: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

CONTEXT PROPAGATION

HttpGet(“http://example.com”)

> GET / HTTP/1.1> Host: example.com> Accept: */*

Application

HTTP headers as TextMap

> GET / HTTP/1.1> Host: example.com> Accept: */*

OpenTracing

Inject operation

> GET / HTTP/1.1> Host: example.com> Accept: */*> uber-trace-id: abc

Jaeger

Outcome: HTTP request with extra header

Page 12: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

CONTEXT PROPAGATION

ServeGet(“http://example.com”)

> GET / HTTP/1.1> Host: example.com> Accept: */*> uber-trace-id: abc

Application

HTTP headers as TextMap

> GET / HTTP/1.1> Host: example.com> Accept: */*> uber-trace-id: abc

OpenTracing

Extract operation

> GET / HTTP/1.1> Host: example.com> Accept: */*> uber-trace-id: abc

Jaeger

Outcome: SpanContext to be used as parent span

Page 13: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

JAEGER

TRACERJAVA, GO, C++, C#, PYTHON, RUBY, ...

BACKENDAGENT, COLLECTOR, INGESTER, QUERY, UI

STORAGEIN-MEMORY, CASSANDRA, ELASTICSEARCH, BADGER, MORE TO COME

Page 14: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

JAEGER

Application

OpenTracing API

Jaeger Client

UdpSender HttpSender

Application Process

Jaeger All in OneHost

Page 15: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

JAEGER

Application

OpenTracing API

Jaeger Client

UdpSender HttpSender

Application Process

Jaeger AgentHost

Storage

Ingester

Collector

Query

UI

Writes toReads from

Page 16: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

DEPLOYING JAEGER

BARE METAL

$ ./jaeger-all-in-one

or:

$ ./jaeger-agent$ ./jaeger-collector

Page 17: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

DEPLOYING JAEGER

DOCKER

$ docker run \ -p 16686:16686 \ -p 14268:14268 \ ... jaegertracing/all-in-one:1.11

Page 18: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

DEPLOYING JAEGER

KUBERNETES - HELM

$ helm install incubator/jaeger \ --name my-jaeger

Page 19: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

DEPLOYING JAEGER

KUBERNETES - OPERATOR

apiVersion: jaegertracing.io/v1

kind: Jaeger

metadata:

name: my-jaeger

spec:

strategy: production

storage:

type: elasticsearch

Page 20: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

WHERE TO GO FROM HERE

DAPPERBY BENJAMIN H. SIGELMAN ET AL, GOOGLE RESEARCH, 2010

MASTERING DISTRIBUTED TRACINGBY YURI SHKURO, PACKT PUB, 2019

Page 21: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

JOIN US

OPENTRACINGhttps://gitter.im/opentracing/public

JAEGERhttps://gitter.im/jaegertracing/Lobby

Page 22: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing

twitter.com/jpkrohling

Q&A

Page 23: Juraci Paixão Kröhling - DeveloperMarch · Juraci Paixão Kröhling Software Engineer Great International Developer Summit 2019-04-25 Advanced Distributed Tracing