/awesome-opentelemetry

A curated list of OpenTelemetry resources

Creative Commons Zero v1.0 UniversalCC0-1.0

Awesome OpenTelemetry Awesome

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

Books about OpenTelemetry and Distributed Tracing

Videos

Videos about OpenTelemetry and Distributed Tracing

Blogs

Blogs about OpenTelemetry and Distributed Tracing

Distributed Tracing Solutions

Open Source

Vendors

Terminology

Quickstart

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.

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

Otel

Client

Client libraries used to instrument applications for distributed tracing.

Other Libraries


OpenTelemetry Client Architecture

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.

Otel

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

List of supported receivers

Processors

Processors are run on data between being received and being exported. Processors are optional though some are recommended. source

List of supported processors

Exporters

An exporter is how you send data to one or more backends/destinations. Exporters may support one or more data sources.

List of supported exporters


OpenTelemetry Architecture

source


Storage

The OpenTelemetry collectors require a persistent storage backend.

  • Cassandra - open source NoSQL distributed database
  • Elasticsearch - open search and analytics solution
  • Jaeger - distributed tracing platform created by Uber Technologies
  • SkyWalking - open source APM system
  • 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

Twitter

Case Studies

Community