2019-10-08 api world · 2019-10-28 · apis: context, metrics, and tracing (logs in the future)...

Post on 11-Aug-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Introducing

Yuri ShkuroSOFTWARE ENGINEER @ UBER

Agenda

Observability

OpenTelemetry

History

Design

Community

Q & A

Yuri Shkuro

Software EngineerUber Technologies

shkuro.com

Founder & Maintainerof CNCF Jaeger

jaegertracing.io

Co-founder of OpenTracing & OpenTelemetry

Author of "Mastering Distributed Tracing",by Packt Publishing

Observabilityin distributed systems

and microservices

Part I

Scaling up does not scale

Scaling out - what does that mean?

Modern Systems

Scaling Wide

Scaling Deep

Microservices at scale are not just wide systems,

they are deep systems

Real production requestTouches 32 microservices, over 100 RPCs, 14 levels of depth

In deep distributed systems, finding what is broken and where

is often more difficult than why

Managing/Operating Deep Systems

To maintain a service’s SLOs (“service level objectives”: latency, errors, etc.),

we must control the entire triangle

In microservices you often have responsibility without control

Controllability is the dual ofObservability

Control Theory

So Called “Three Pillars” of Observability

Metrics Logs Traces

Metrics and Logs Alone Are Not Enough

Cognitive load ≈ O(depth2)

Metrics

Logs

Distributed Tracing Provides Context

Metrics

Logs

Traces

With Context From Traces

Cognitive load ≈ O(depth)

Metrics

Logs

Traces

Controllability requires Observability

Traces are the contextual glue for the other signals

Observability requires high quality Telemetry

Part IIhttps://opentelemetry.io/

Our Software Is Highly ComposableOften from Open Source Components

Microservice

Queue DriverDB Driver

DB Queue

Server Framework RPC Framework

Threads

Telemetry must become a built-in feature of

cloud-native software

This Is Not the First Time

OpenCensus

OpenTracingFirst attempt at standardization

Tracing only

Pure API, user must mount an implementation

Coupled with context propagation

180+ integrations with OSS libraries

OpenTracing Design

User application process

Application (automatically instrumented)Application

Application (manually instrumented) Automatic

instrumentationManually instrumented

frameworks

Instrumentation API

Tracing library implementation

Tracing backend - Visualization frontend

Agent Collector

API

opentracing contrib

OpenCensusSimilar, but not the same

Metrics and Tracing

“Batteries included” - default SDK

Pluggable Exporters

API not cleanly separated

Agent and Collector

OpenCensus

The next major version of bothOpenTracing and OpenCensus

OpenCensus

+ =

OpenTelemetry

OpenTelemetryA complete system

APIs: Context, Metrics, and Tracing (Logs in the future)

“Batteries included” - default SDKs

Pluggable Exporters, Samplers, etc.

Default data formats

Agent and Collector

Backwards compatible with OpenTracing and OpenCensus via default bridge

OpenTelemetry DesignUser application process

Application (automatically instrumented)Application

Application (manually instrumented) Automatic

instrumentationManually instrumented

frameworks

Instrumentation API

Minimum implementation or full SDK

Monitoring backend

Agent Collector

API

SDK

Agent & Collector

contrib

OpenTelemetry DesignBuilt on top of context propagation

Types of Context

Correlationsfor observability signals (labels)

Baggagefor application context

Custom context

OpenTelemetry Design - Layers

Agent & Collector

Application code / Instrumentation

Metrics API Tracing API

Baggage API Correlations API

Context

Inter-process Context Propagation

Plugins: TracingCorrelationsBaggage Custom

OpenTelemetry Community

Governing Committee(5 people, 4+ seats election in October)

Technical Committee

Language SIGs

Auto-instrumentation SIGs

Agent/Collector SIGSpecification SIG

https://github.com/open-telemetry/community

Project Status - October

Mid-October

Specification v0.2-alpha

November

Specification Beta

SDKs BetaCollector, Exporters

SDKs v0.2-alphaC#, Go, Java, Javascript, Python

https://opentelemetry.io/project-status/

Future WorkYou can help!

Automatic instrumentation

(zero touch)

Expandlanguage coverage

(Erland, C++, Ruby, …)

Integrate with otherOSS projects

(K8s, Envoy, etc.)

How To Get Involved

Code: https://github.com/open-telemetryChat: https://gitter.im/open-telemetry/community

Join a Special Interest

Group (SIG)

Provide Feedback,and OTEPs

Integrate with yourOSS project

Q&A

Thank YouFind me @ https://shkuro.comhttps://opentelemetry.io/

top related