OpenTelemetry 101: Where It Came From + Where It's Going

Table of contents

Get started with Tracetest!

Get started with Tracetest!

What is OpenTelemetry?

OpenTelemetry is an observability framework and toolkit that generates and manages telemetry data such as traces, metrics, and logs. It is vendor- and tool-agnostic, compatible with a wide variety of open source ecosystem integrations and supported by many vendors. OpenTelemetry is designed to be extensible and allows users to own the data they generate. It is not an observability back-end and the storage and visualization of data is left to other tools.

OpenTelemetry CNCF Project

The OpenTelemetry Project was created in 2019 by merging OpenCensus and OpenTracing. Its goal is to provide a unified standard for collecting observability data. Prior to this standard, developers had to choose a particular vendor's application performance monitoring (APM) solution and use vendor-specific tooling to implement observability, which led to vendor lock-in. From the observability vendor perspective, maintaining instrumentation across a wide spectrum of languages and technologies was a daunting task, even for larger vendors. With OpenTelemetry, developers have a standard way to instrument their code and vendors can focus on how to visualize and analyze the data.

OpenTelemetry focuses on three major observability signals: logs, metrics, and distributed traces. Of these, distributed tracing is considered the most valuable and was the starting point for the OpenTelemetry Project. A distributed trace records the paths taken by requests as they propagate through multi-service architectures, showing the call order, timing, and details of each step.

A distributed trace has four components:

  1. The trace
  2. Spans representing each step
  3. Attributes associated with each span
  4. Events associated with each span

Below is a typical trace.

Screenshot of an OpenTelemetry Demo Microservice App

OpenTelemetry Demo Microservice App

In April 2021, the OpenTelemetry Project created a demo application to showcase how to instrument a heterogeneous distributed application. You can install and run the OpenTelemetry Demo in Docker using the commands provided here.

git clone https://github.com/open-telemetry/opentelemetry-demo.git

cd opentelemetry-demo/

docker compose up --no-build

Note: If you're running on Apple Silicon, run docker compose build in order to create local images vs. pulling them from the repository.

The application, in line with the observability theme of the OpenTelemetry project, is an Astronomy Store Front. It includes 11 different languages and 12 major services, and demonstrates both automatic and manual instrumentation.

This application is useful for developers who are new to observability, enterprises that have adopted OpenTelemetry and want to examine a working application, and vendors who want to demonstrate their observability-related products with a complex application. The demo has an extensive list of companies that work with and rely on it.

The project is highly popular, with over 1K stars on GitHub and over 500 forks. It has had 86 unique contributors, and changes are being made rapidly. These developers work for different companies, are located all over the world, and are submitting changes to different areas of the application.

About Tracetest

Tracetest lets you build integration and end-to-end tests 98% faster with distributed traces. No plumbing, no mocks, no fakes – test against real data. Assert against both the response and trace data at every point of a request transaction. Validate timing of trace spans, including databases. Assert against side-effects, including Kafka and message queues. Save and run tests visually and programatically with CI build jobs. Get started with Tracetest for free and start building tests in minutes instead of days.