OpenCensus is a toolkit for collecting application performance and behavior data. It currently includes 3 apis: stats, tracing and tags.
The library is in alpha stage and the API is subject to change.
Please join gitter for help or feedback on this project.
Integrating OpenCensus with a new library means recording stats or traces and propagating context.
For Maven add to your pom.xml:
<dependencies>
<dependency>
<groupId>io.opencensus</groupId>
<artifactId>opencensus-api</artifactId>
<version>0.10.1</version>
</dependency>
</dependencies>For Gradle add to your dependencies:
compile 'io.opencensus:opencensus-api:0.10.1'Here's an example of creating a Span and record some trace annotations. Notice that recording the annotations is possible because we propagate scope. 3rd parties libraries like SLF4J can integrate the same way.
publicfinalclassMyClassWithTracing {
publicstaticvoiddoWork() {
// Create a child Span of the current Span.try (Scopess = tracer.spanBuilder("MyChildWorkSpan").startScopedSpan()) {
doInitialWork();
tracer.getCurrentSpan().addAnnotation("Finished initial work");
doFinalWork();
}
}
privatestaticvoiddoInitialWork() {
// ...tracer.getCurrentSpan().addAnnotation("Important.");
// ...
}
privatestaticvoiddoFinalWork() {
// ...tracer.getCurrentSpan().addAnnotation("More important.");
// ...
}
}TODO
Besides recording tracing/stats events the application also need to link the implementation, setup exporters, and debugging Z-Pages.
For Maven add to your pom.xml:
<dependencies>
<dependency>
<groupId>io.opencensus</groupId>
<artifactId>opencensus-api</artifactId>
<version>0.10.1</version>
</dependency>
<dependency>
<groupId>io.opencensus</groupId>
<artifactId>opencensus-impl</artifactId>
<version>0.10.1</version>
<scope>runtime</scope>
</dependency>
</dependencies>For Gradle add to your dependencies:
compile 'io.opencensus:opencensus-api:0.10.1'
runtime 'io.opencensus:opencensus-impl:0.10.1'If the application owner wants to export in-process tracing and stats data via HTML debugging pages see this link.