A stats collection and distributed tracing framework
Clone or download
nvartolomei and g-easy Use PROJECT_SOURCE_DIR instead of CMAKE_SOURCE_DIR for includes (#267)
Allows including the project using `add_subdirectory` command.

`CMAKE_SOURCE_DIR` always resolves to the top level project, breaking includes.
Latest commit a2de572 Jan 17, 2019


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.


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++11 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:

  • gcc 4.8.1
  • clang 3.4
  • MSVC 19