What is OpenTelemetry?
OpenTelemetry is an open source observability framework hosted by Cloud Native Computing Foundation. It is a merger of OpenCensus and OpenTracing projects.
OpenTelemetry aims to provide a single standard across all types of observability signals such as traces, metrics, and logs.
OpenTelemetry specifies how to collect and send telemetry data to backend platforms. By providing a common data format and API, OpenTelemetry makes it easier for organizations to share and reuse telemetry data, and to integrate with a variety of observability tools and platforms.
OpenTelemetry architecture promotes flexibility, interoperability and extensibility, enabling developers to adopt observability practices that meet their specific needs and environments.
Telemetry data types
OpenTelemetry supports different telemetry data types:
OpenTelemetry Traces represent the execution path of a request or operation across multiple components and services. They provide detailed timing and context information, allowing developers to understand the flow of requests and identify performance bottlenecks.
OpenTelemetry Metrics are quantitative measurements of system behavior or resource utilization. They help monitor and analyze performance over time and can be used for alerting, capacity planning, and trend analysis.
OpenTelemetry Logs contain structured or unstructured textual information about events, errors, and activities that occur within an application. They are useful for debugging, auditing, and troubleshooting.
How to use OpenTelemetry?
The easiest way to get started with OpenTelemetry is to pick a distributed tracing tool (vendor) and follow their documentation. Most vendors provide pre-configured OpenTelemetry distros that allow you to skip some steps and can significantly improve your experience.
If you are looking for an open source solution, Jaeger is historically the default option, but Uptrace provides a more elaborate UI and might be a better choice nowadays.
Uptrace is an OpenTelemetry APM that uses ClickHouse database to store traces, metrics, and logs. You can use it to monitor applications and set up automatic alerts to receive notifications via email, Slack, Telegram, and more.
OpenTelemetry API is a programming interface that you can use to instrument code to collect telemetry data such as traces, metrics, and logs.
OpenTelemetry SDK is the official implementation of OpenTelemetry API that processes and exports collected telemetry to backends.
OpenTelemetry Instrumentations are plugins for popular frameworks and libraries that use OpenTelemetry API to record important operations, for example, HTTP requests, DB queries, logs, errors, and more.
OpenTelemetry Collector is a proxy between your application and a backend. It receives telemetry data, transforms it, and then exports data to backends that can store it permanently. Collector can also act as an agent that pulls telemetry data from monitored systems, for example, OpenTelemetry Redis or filesystem metrics.
OTLP is the OpenTelemetry protocol used by SDK and Collector to export data to backends or other collectors. As a transport, OTLP can use gRPC (OTLP/gRPC) or HTTP (OTLP/HTTP).
OpenTelemetry backend is responsible for receiving, storing, and analyzing the telemetry data collected by OpenTelemetry. It acts as a central repository or processing pipeline for the data, allowing you to aggregate, query, visualize, and gain insights from the telemetry data generated by your applications.
OpenTelemetry Jaeger is a project within OpenTelemetry ecosystem that is often used as the default OpenTelemetry backend for storing, analyzing, and visualizing telemetry data.