Awesome OpenTelemetry
A curated list of OpenTelemetry resources.
What is OpenTelemetry?
OpenTelemetry is a collection of tools, APIs, and SDKs. Use it to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) to help you analyze your software’s performance and behavior
Contribute
Contributions welcome! Read the contribution guidelines first.
Contents
- Books
- Videos
- Blogs
- Distributed Tracing Solutions
- Terminology
- Quickstart
- OpenTelemetry Instrumentation
- Components
- Newsletters
- Podcasts
- Events
- Case Studies
- Community
Books
Books about OpenTelemetry and Distributed Tracing
- The Future of Observability with OpenTelemetry
- Distributed Tracing in Practice
- Mastering Distributed Tracing
- Distributed Systems Observability
- Distributed Tracing with Jaeger, Kubernetes, and Istio
- Cloud-Native Observability with OpenTelemetry
Videos
Videos about OpenTelemetry and Distributed Tracing
- OpenTelemetry meetup with Yuri Shkuro on Distributed Tracing, Jaeger and OpenTelemetry
- SREcon21 - Take Me Down to the Paradise City Where the Metric Is Green and Traces Are Pretty
- The OpenTelemetry Bootcamp
- OpenTelemetry Twitch
- Honeycomb & OpenTelemetry: Instrumentation Should Be Boring
- OpenTelemetry Course - Understand Software Performance
- How OpenTelemetry is Eating the World
- OpenTelemetry Agent and Collector: Telemetry Built-in Into All Software
- Introduction to Tracing : OpenTelemetry & Opentracing
- OpenTelemetry and observability at Shopify, Splunk, and Google
- Live Panel: OpenTelemetry Metrics Deep Dive
- Monitoring Go Applications with OpenTelemetry
- Getting Started with OpenTelemetry, Grafana, and More
- Monitoring Elixir With OpenTelemetry
- Honeycomb - OpenTelemetry Collector
- OpenTelemetry Architecture Overview
- Jaeger Intro - Yuri Shkuro, Uber
- Prometheus, OpenMetrics, and the CNCF observability ecosystem
- OpenTelemetry and observability at Shopify, Splunk, and Google
- Understanding Microservices with Distributed Tracing
- OpenTelemetry Deep Dive
- OpenTelemetry Java Auto-Instrumentation
- Distributed Tracing Made Easy with .NET Core and OpenTelemetry
- Getting Started with OpenTelemetry in Python
- Standardising APM with OpenTelemetry and Elastic Observability
- Distributed tracing with OpenTelemetry and Cloud Trace
- The what and why of distributed tracing
- Introduction to Tracing
- Understanding Microservices with Distributed Tracing
- Why You Should Use Distributed Tracing Tools
- Getting Started with Jaeger - Joe Elliott, Grafana Labs
- Distributed Tracing Made Easy with .NET Core and OpenTelemetry
- Adding OpenTelemetry to Production Apps
- Otel Instrumentation with SigNoz
Blogs
Blogs about OpenTelemetry and Distributed Tracing
- Beginner’s Guide to OpenTelemetry - Guide to OpenTelemetry.
- Unpacking Observability: The Path to OpenTelemetry - Blog post how to roll out OpenTelemetry to your organization.
- Sampling and rate-limiting - Good write up about Sampling from Uptrace.
- OpenTelemetry and Python - A Complete Instrumentation Guide from Timescale
- OpenTelemetry Masterclass - OpenTelemetry Masterclass from New Relic
- Honeycomb - Blog posts about observability, monitoring, OpenTelemetry, and more.
- Aspecto - Guides on how to use OpenTelemetry.
- Jaeger - Blog posts from Jaeger.
- Medium - Medium posts about OpenTelemetry.
- Dev.to - Dev.to posts about OpenTelemetry.
- Lightstep - Blog posts and latest updates of OpenTelemetry.
- From Distributed Tracing to APM - Taking OpenTelemetry and Jaeger Up a Level.
- Evolving Distributed Tracing at Uber Engineering - A Distributed Tracing story at Uber.
- What is OpenTelemetry? - Blog post about OpenTelemetry and Observability.
- Signoz - News & updates on observability and application monitoring.
- Taking Distributed Tracing Beyond Monitoring - Observability into Your FinOps.
- Authenticate your OpenTelemetry Collector using Azure ADAL - Authentication using Azure ADAL.
- Deep Dive into OpenTelemetry for .NET - A four part guide how to use how to use OpenTelemetry with .NET.
- Why is OpenTelemetry the future of instrumentation? - A two part serie about Understanding OpenTelemetry.
- OpenTelemetry Concepts A two part serie about Understanding OpenTelemetry. (part 2)
- Distributed Tracing with OpenTelemetry and Jaeger - Tracing using OTEL agent and collector beside Jaeger.
- Understanding OpenTelemetry and distributed tracing - Understanding OpenTelemetry and distributed tracing.
- Distributed tracing and observability - Blog post from Dynatrace about Open Observability.
- An Introduction to Distributed Tracing - Introduction to Distributed Tracing and the benefits of it.
- What is Distributed Tracing? - Blog post from Spunk that explains what Distributed Tracing is.
- OpenTelemetry: beyond getting started Explores scenarios for telemetry collection using OpenTelemetry.
- Deploying Jaeger on Kubernetes - A Guide to Deploying Jaeger on Kubernetes in Production.
- From Distributed Tracing to APM - Taking OpenTelemetry and Jaeger Up a Level
- Take Jaeger for a HotROD ride - Blog post of OpenTracing using a demo application HotROD from Jaeger.
- A beginner’s guide to OpenTelemetry
Distributed Tracing Solutions
Open Source
- Jaeger
- OpenTelemetry
- Zipkin
- OpenTracing - Deprecated
- OpenCensus - Deprecated
Vendors
- Aspecto
- AWS X-Ray
- Honeycomb
- Datadog
- Dynatrace
- Instana
- Lightstep
- LogicMonitor
- Logz.io
- New Relic
- SigNoz
- Splunk
Terminology
Quickstart
- OpenTelemetry
- Aspecto Vendor
- AWS X-Ray Vendor
- Datadog Vendor
- Dynatrace Vendor
- Elastic Vendor
- Honeycomb Vendor
- Lightstep Vendor
- LogicMonitor Vendor
- Logz.io Vendor
- New Relic Vendor
- SigNoz Vendor
- Splunk Vendor
- Lightstep Vendor
OpenTelemetry Instrumentation
Native - Supported Languages
- C++ - A language-specific implementation of OpenTelemetry in C++.
- .NET - supports Automatic Instrumentation
- Erlang/Elixir - A language-specific implementation of OpenTelemetry in Erlang/Elixir.
- Go -A language-specific implementation of OpenTelemetry in Go.
- Java - supports Automatic Instrumentation
- JavaScript - JS logo A language-specific implementation of OpenTelemetry in JavaScript (for Node.JS & the browser).
- PHP - A language-specific implementation of OpenTelemetry in PHP.
- Python - A language-specific implementation of OpenTelemetry in Python.
- Ruby - supports Automatic Instrumentation
- Rust - A language-specific implementation of OpenTelemetry in Rust.
- Swift - A language-specific implementation of OpenTelemetry in Swift.
Vendors Distro
Distributions and vendors who natively support OpenTelemetry in their commercial products.
- Aspecto
- AWS
- Azure
- Datadog
- Dynatrace
- Elastic
- F5
- Grafana Labs
- Honeycomb
- Lightstep
- Logz.io
- New Relic
- Sentry Software
- Splunk
- Sumo Logic
- Uptrace
Full list of vendors that supports OpenTelemetry
OpenTelemetry Registry
The OpenTelemetry Registry allows you to search for instrumentation libraries, tracer implementations, utilities, and other useful projects in the OpenTelemetry ecosystem.
Components
Reference Architecture
Client
Client libraries used to instrument applications for distributed tracing.
Other Libraries
Refer from OpenTelemetry Official Document
Agent
An agent listens for spans, which it batches and sends to the Collector. The agent is meant to be placed on the same host as the instrumented application. This is typically accomplished by having a sidecar in container environments such as Kubernetes or running it as a DaemonSet (on each node).
OTLP
OTLP is the default OpenTelemetry protocol for transmitting telemetry data. Other formats can be Zipkin or Jaeger.
Collector
Similar to the Agent, the Collector is able to receive spans and place them in an internal queue for processing.
The OpenTelemetry collector is a vendor-agnostic way to receive, process and export telemetry data.
The Collector consists of three components that access telemetry data:
- Receivers - How data gets into the Collector
- Processors - Processors are run on data between being received and being exported.
- Exporters - How you send data to one or more backends/destinations
For vendor specific receivers/exporters, see OpenTelemetry Collector Contrib
Receivers
A receiver is how data gets into the OpenTelemetry Collector. Generally, a receiver accepts data in a specified format, translates it into the internal format and passes it to processors and exporters defined in the applicable pipelines. source
Processors
Processors are run on data between being received and being exported. Processors are optional though some are recommended. source
Exporters
An exporter is how you send data to one or more backends/destinations. Exporters may support one or more data sources.
Storage
The OpenTelemetry collectors require a persistent storage backend.
- Cassandra - open source NoSQL distributed database
- Elastic - open search and analytics solution
- Jaeger - distributed tracing platform created by Uber Technologies
- SkyWalking - open source APM system
- Splunk
- Tempo - Grafana Tempo is an open source, easy-to-use, and high-scale distributed tracing backend.
Ingester
You can optional use an Ingester, which is a service that reads data from Kafka and writes to the storage backend.
- Kafka - open-source distributed event streaming platform
UI
Visualizing the distributed tracing data.
Newsletters
- o11y news! - Newsletter about Observability
- Observability news - Updates around observability (o11y) with a special focus on open source
- The new stack - A newsletter digest of the week’s most important stories & analyses.
Podcasts
Events
- Opentelemetry
- Opentracing
- Opencensusio
- Kubernetesio
- JaegerTracing
- CNCF
- SREcon
- LightstepHQ
- Yuri Shkuro - Creator of Jaeger
- Ted Young - Co-founded the OpenTelemetry project
- Liz Fong-Jones - Advocate at Honeycomb.io
- Ben Sigelman - Co-created OpenTelemetry & OpenTracing
- Juraci Paixão Kröhling - Opentelemetry maintainer.
- Charity Majors - cofounder/CTO Honeycomb.io
- Awesome Opentelemetry - A curated list of OpenTelemetry resources.