opentelemetry-cpp is a free, open source monitoring & observability project written in C++ and released under Apache-2.0. It has 1,377 GitHub stars, 631 forks and 290 open issues, and was last pushed 2 hours ago. On this registry it ranks #205 of 271 tracked projects in Monitoring & Observability, with 5 head-to-head comparisons available.

What is opentelemetry-cpp?

OpenTelemetry C++ is the official C++ client for OpenTelemetry, the vendor-neutral observability framework, and it is built for C++ application owners and library authors who need to emit logs, metrics, and traces from native code.

What it is

OpenTelemetry C++ is the C++ implementation of the OpenTelemetry specification, providing an API and SDK for instrumenting applications written in C++ so that telemetry — logs, metrics, and traces — can be produced and exported. It lives in the OpenTelemetry ecosystem under the Cloud Native Computing Foundation, alongside equivalent clients for other languages, and the repository ships both the API surface that application and library authors code against and the SDK that processes and exports the resulting data.

The concrete problem it replaces is hand-rolled, vendor-specific instrumentation. Without a shared client, a C++ service that wants observability must either write its own tracing and metrics plumbing or adopt one vendor's proprietary agent and data format, which couples the application to that vendor and makes instrumented libraries unusable downstream. OpenTelemetry C++ provides a standard API that libraries can call safely, since a library that depends on the API does not force a specific SDK or backend on the applications that link it. Instrumentation is written once against the specification, and the exporter and processing pipeline are chosen at deployment time by whoever owns the process.

Key capabilities

  • Emits all three signals — Logs, Metrics, and Traces — with the project marked Stable across all three in the spec compliance matrix.
  • Supports C++14, C++17, C++20, and C++23 (ISO/IEC 14882:2014 through 14882:2024), with any exceptions noted per-component in individual README.md files.
  • Ships examples/simple, a minimal program showing instrumentation of a small library using a simple processor and a console exporter.
  • Builds under both CMake and Bazel, with build files for both provided alongside the example.
  • Published in the Bazel Central Registry, so Bazel users add it with bazel_dep(name = "opentelemetry-cpp", version = "x.y.z") in MODULE.bazel.
  • Documents OSS dependency and licence requirements in docs/dependencies.md, and installation steps in INSTALL.md.
  • Distributed under the Apache-2.0 licence, with FOSSA licence and security badges plus an OpenSSF Scorecard badge on the repository.

Who uses it and how

  • Application owners instrumenting native C++ services, using the API directly and choosing an SDK configuration and exporter at startup.
  • Library authors who depend only on the API so that consumers of the library can supply their own SDK, processor, and exporter.
  • Teams developing on Linux, macOS, or Windows, since CI builds and tests on Ubuntu 22.04 and 24.04, macOS 14 and 15, and Windows Server 2022 and 2025, across x86-64 and arm64.
  • Organizations that already run other OpenTelemetry language clients and want native C++ code to feed the same telemetry pipeline rather than a separate tool.
  • Contributors joining the weekly community call, which alternates between Monday at 13:00 PT and Wednesday at 9:00 PT, with coordination through the #otel/cpp channel on CNCF Slack.

Getting started

Installation follows INSTALL.md, and the getting-started guide and reference documentation live at opentelemetry-cpp.readthedocs.io. Bazel users can pull the latest version straight from the Bazel Central Registry with bazel_dep(name = "opentelemetry-cpp", version = "x.y.z"), while CMake users build from source.

How it compares

The facts provided name no similar tools and no set of paid products that this project replaces, so no comparison can honestly be drawn here. On the evidence available, OpenTelemetry C++ stands alone in this registry as the C++ reference client for the OpenTelemetry specification.

When to use it — and when not to

Adopters must supply their own build toolchain and a C++ compiler meeting at least C++14, then choose and operate an exporter and any collector or backend that receives the data; the client itself is a library, not a service. Teams that do not ship native C++ code, or that want a drop-in agent with no build integration, are not the intended audience. Note also that the repository carries 290 open issues and that the supplied README excerpt is largely badges, build-platform tables, and links to external files, so anyone evaluating the project should read INSTALL.md, docs/dependencies.md, and the spec compliance matrix directly rather than relying on the top-level README alone.

project readme (upstream, from github) — read inline

OpenTelemetry C++

Slack codecov.io Build
Status Release FOSSA License Status FOSSA Security Status OpenSSF Scorecard

The C++ OpenTelemetry client.

Project Status

Stable across all 3 signals i.e. Logs, Metrics, and Traces.

See Spec Compliance Matrix to understand which portions of the specification has been implemented in this repo.

Supported C++ Versions

Code shipped from this repository generally supports the following versions of C++ standards:

  • ISO/IEC 14882:2014 (C++14)
  • ISO/IEC 14882:2017 (C++17)
  • ISO/IEC 14882:2020 (C++20)
  • ISO/IEC 14882:2024 (C++23)

Any exceptions to this are noted in the individual README.md files.

Please note that supporting the C Programming Language is not a goal of the current project.

Supported Development Platforms

Our CI pipeline builds and tests on the following platforms:

Platform Architecture Build type
Ubuntu 22.04 x86-64 CMake
Ubuntu 24.04 x86-64 CMake, Bazel
macOS 14 arm64 CMake
macOS 15 arm64 Bazel
Windows Server 2022 x86-64 CMake, Bazel
Windows Server 2025 x86-64 CMake

In general, the code shipped from this repository should build on all platforms having C++ compiler with supported C++ standards.

Dependencies

Please refer to Dependencies.md for OSS Dependencies and license requirements.

Installation

Please refer to INSTALL.md.

Bazel Central Registry

This project is available in the Bazel Central Registry (BCR). To use it with Bazel, add the following to your MODULE.bazel file:

bazel_dep(name = "opentelemetry-cpp", version = "x.y.z")

For the latest version, see BCR: opentelemetry-cpp.

Getting Started

As an application owner or the library author, you can find the getting started guide and reference documentation on opentelemetry-cpp.readthedocs.io

The examples/simple directory contains a minimal program demonstrating how to instrument a small library using a simple processor and console exporter, along with build files for CMake and Bazel.

Contributing

See CONTRIBUTING.md

We meet weekly, and the time of the meeting alternates between Monday at 13:00 PT and Wednesday at 9:00 PT. The meeting is subject to change depending on contributors' availability. Check the OpenTelemetry community calendar for specific dates and Zoom meeting links.

Meeting notes are available as a public Google doc.

For edit access, get in touch on the #otel-cpp channel on CNCF Slack. If you are new to the CNCF Slack community, you can create an account.

The meeting is open for all to join. We invite everyone to join our meeting, regardless of your experience level. Whether you're a seasoned OpenTelemetry developer, just starting your journey, or simply curious about the work we do, you're more than welcome to participate!

Maintainers

For more information about the maintainer role, see the community repository.

Approvers

For more information about the approver role, see the community repository.

Emeritus

For more information about the emeritus role, see the community repository.

Thanks to all the people who have contributed

contributors

Release Schedule

See the release notes for existing releases.

See the project milestones for details on upcoming releases. The dates and features described in issues and milestones are estimates, and subject to change.

Frequently asked questions

Is opentelemetry-cpp free to use?

opentelemetry-cpp is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does opentelemetry-cpp do?

The OpenTelemetry C++ Client

What is opentelemetry-cpp written in?

opentelemetry-cpp is primarily written in C++. Its source is publicly available at https://github.com/open-telemetry/opentelemetry-cpp, and it has 1,377 GitHub stars.