OpenTelemetry 101: Where It Came From + Where It's Going
Table of contents
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:
- The trace
- Spans representing each step
- Attributes associated with each span
- Events associated with each span
Below is a typical trace.
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.
Related topics: