2019-10-08 api world · 2019-10-28 · apis: context, metrics, and tracing (logs in the future)...
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