OpenTelemetry
A collection of tools, APIs, and SDKs, OpenTelemetry helps engineers instrument, generate, collect, and export telemetry data such as metrics, logs, and traces, in order to analyze software performance and behavior.
Grafana Labs is highly involved in the OpenTelemetry project, employing people collaborating with different sub-projects, also called Special Interest Groups (SIGs), such as the OpenTelemetry Collector, Operator for Kubernetes, Java SDK, among others. We are also proud to participate in the project’s governing committee.
The many OpenTelemetry sub-projects can be divided into three groups:
- Specification, standards, and semantic conventions.
- Client libraries
- Middleware
The OpenTelemetry project can help you by providing interchangeable parts, allowing you to have:
- A vendor-neutral instrumentation API and SDK
- A standard data format, OTLP, supported today already by many tools and solutions, including Grafana Cloud, Grafana Mimir, and Grafana Tempo
- Complex collection pipelines with the OpenTelemetry Collector
- Auto-instrumentation agents and libraries of Java, .Net, Python, and JavaScript applications, among others
- Configuration of auto-instrumentation agents and libraries for Kubernetes workloads by the OpenTelemetry Operator
In general, each part of the OpenTelemetry project can be used independently of the others. For instance, you can instrument your applications with the OpenTelemetry API but use an alternate SDK, potentially more appropriate for your niche applications. Or use a different protocol than OTLP to send the telemetry data from your application to a backend, despite it using an official OpenTelemetry SDK. You can also adopt the OpenTelemetry Collector even though none of your applications are using any OpenTelemetry components. However, it is easier to use the OpenTelemetry projects together.
Read on for more information about specific OpenTelemetry components and how they can be used with Grafana Labs’ projects and solutions.
OpenTelemetry and Grafana
OpenTelemetry offers vendor-neutral open source tools, SDKs, and standards for application observability. This is a perfect match for Grafana’s open big tent approach. Bringing together infrastructure and platform telemetry like Kubernetes’ Prometheus metrics and application telemetry in a single unified open source monitoring backend bridges the gap between operations and application developers, and it provides new ways of collaboration and insights.
There are multiple options for setting up an OpenTelementry endpoint with Grafana:
- OpenTelemetry Collector: The OpenTelemetry Collector, an open source project maintained by the OpenTelemetry community, is an alternative to the Grafana Agent. The Collector’s OTLP receiver is production-ready, so this is our recommendation for setting up an OpenTelemetry endpoint today.
- OpenTelemetry endpoint in the Grafana Cloud: This is the easiest way to get started, enabling applications to send their metrics, traces, and logs directly to Grafana Cloud.
- Grafana agent’s “otelcol.receiver.otlp” receiver: Starting with version 0.29, the Grafana Agent provides an OTLP endpoint for receiving OpenTelemetry data. The receiver is implemented as a Grafana Agent Flow component.
Built on open source, driven by the community
Contributors:
- Goutham Veeramachaneni
- Juraci Paixão Kröhling
- Cyrille Le Clerc
- Ruslan Kovalov
- Richard Hartmann
- Irina Marchuk
- Gregor Zeitlinger
Resources
Featured:
- OpenTelemetry Collector documentation
- OpenTelemetry Instrumentation documentation
- Set up and observe a Spring Boot application with Grafana Cloud, Prometheus, and OpenTelemetry
- Testing shift left observability with the Grafana Stack, OpenTelemetry, and k6
Docs:
Blogs:
- Auto-instrumenting a Java Spring Boot application for traces and logs using OpenTelemetry and Grafana Tempo
- Intro to distributed tracing with Tempo, OpenTelemetry, and Grafana Cloud
- How to collect Prometheus metrics with the OpenTelemetry Collector and Grafana
- How to send logs to Grafana Loki with the OpenTelemetry Collector using Fluent Forward and Filelog receivers
Slack: