Skip to content
This repository has been archived by the owner on Jul 31, 2023. It is now read-only.

census-instrumentation/opencensus-cpp

Warning

OpenCensus and OpenTracing have merged to form OpenTelemetry, which serves as the next major version of OpenCensus and OpenTracing.

OpenTelemetry has now reached feature parity with OpenCensus, with tracing and metrics SDKs available in .NET, Golang, Java, NodeJS, and Python. All OpenCensus Github repositories, except census-instrumentation/opencensus-python, will be archived on July 31st, 2023. We encourage users to migrate to OpenTelemetry by this date.

To help you gradually migrate your instrumentation to OpenTelemetry, bridges are available in Java, Go, Python, and JS. Read the full blog post to learn more.

OpenCensus - A stats collection and distributed tracing framework

Gitter chat Travis Build Status Appveyor Build Status

OpenCensus is a toolkit for collecting application performance and behavior data. It currently includes an API for tracing and stats.

This library is currently in alpha: the API is in the process of being finalized; much of the implementation will be replaced with a more optimized one in the near future.

Please join gitter for help or feedback on this project.

This is not an officially supported Google product.

Quickstart

Please refer to examples/helloworld/ for an example of instrumentation with OpenCensus.

Please refer to examples/grpc/ for an example RPC server that integrates gRPC, Stackdriver, and Prometheus.

Please refer to trace/examples/span_example.cc for tracing and stats/examples/view_and_recording_example.cc for stats.

Directory structure

  • opencensus/ prefix to get #include paths like opencensus/trace/span.h
    • common/ - Provides common libraries and components for OpenCensus.
    • doc/ - Documentation for our APIs, coding style, etc.
    • exporters/ - Exporters send stats and traces to monitoring services.
    • plugins/ - Plugins add OpenCensus instrumentation to frameworks.
    • stats/ - OpenCensus stats API.
    • trace/ - OpenCensus tracing API.

Language support

  • STL is required. (e.g. libstdc++, libc++, etc)
  • C++14 is required.
  • absl is used for its building blocks.
  • googletest is used for tests.
  • benchmark is used for benchmarking.
  • We do not depend on:
    • Boost
    • Exception handling
    • RTTI

Compiler support

We are targeting the following compilers: