NOTE: This project is no longer maintained, use https://github.com/razorpay/opencensus-php instead
Census for PHP. Census provides a framework to measure a server's resource usage and collect performance stats. This repository contains PHP related utilities and supporting software needed by Census.
-
This package is a fork of the official OpenCensus package. To include it in your project, add the following configuration in your
composer.json
:{ "repositories": [ { "type": "vcs", "url": "git@github.com:nenad/opencensus-php.git" } ] }
-
Install the
opencensus/opencensus
package using composer:$ composer require opencensus/opencensus:~0.6
IMPORTANT: Please ensure your version is >= 0.2.0. There is a potential security vulnerability in < 0.2.0.
-
Initialize a tracer for your application:
use OpenCensus\Trace\Tracer; use OpenCensus\Trace\Exporter\EchoExporter; Tracer::start(new EchoExporter());
To add tracing to a block of code, you can use the closure/callable form or explicitly open and close spans yourself.
$pi = Tracer::inSpan(['name' => 'expensive-operation'], function() {
// some expensive operation
return calculatePi(1000);
});
$pi = Tracer::inSpan(['name' => 'expensive-operation'], 'calculatePi', [1000]);
// Creates a detached span
$span = Tracer::startSpan(['name' => 'expensive-operation']);
// Opens a scope that attaches the span to the current context
$scope = Tracer::withSpan($span);
try {
$pi = calculatePi(1000);
} finally {
// Closes the scope (ends the span)
$scope->close();
}
You can specify different samplers when initializing a tracer. The default
sampler is the AlwaysSampleSampler
which will attempt to trace all requests.
The provided samplers are:
Class | Description |
---|---|
NeverSampleSampler | Never trace any requests |
AlwaysSampleSampler | Trace all requests |
MultiSampler | Check multiple samplers |
QpsSampler | Trace X requests per second. Requires a PSR-6 cache implementation |
ProbabilitySampler | Trace X percent of requests. |
If you would like to provide your own sampler, create a class that implements
SamplerInterface
.
You can choose different exporters to send the collected traces to.
The provided exporters are:
Class | Description | Dependency |
---|---|---|
EchoExporter | Output the collected spans to stdout | |
FileExporter | Output JSON encoded spans to a file | |
JaegerExporter | Report traces to Jaeger server via Thrift over UDP | opencensus/opencensus-exporter-jaeger |
LoggerExporter | Exporter JSON encoded spans to a PSR-3 logger | |
NullExporter | No-op | |
OneLineEchoExporter | Output the collected spans to stdout with one-line | |
StackdriverExporter | Report traces to Google Cloud Stackdriver Trace | opencensus/opencensus-exporter-stackdriver |
ZipkinExporter | Report collected spans to a Zipkin server | opencensus/opencensus-exporter-zipkin |
If you would like to provide your own reporter, create a class that implements
ExporterInterface
.
This library follows Semantic Versioning.
Please note it is currently under active development. Any release versioned 0.x.y is subject to backwards incompatible changes at any time.
GA: Libraries defined at a GA quality level are stable, and will not introduce backwards-incompatible changes in any minor or patch releases. We will address issues and requests with the highest priority.
Beta: Libraries defined at a Beta quality level are expected to be mostly stable and we're working towards their release candidate. We will address issues and requests with a higher priority.
Alpha: Libraries defined at an Alpha quality level are still a work-in-progress and are more likely to get backwards-incompatible updates.
Current Status: Alpha
Contributions to this library are always welcome and highly encouraged.
See CONTRIBUTING for more information on how to get started.
Apache 2.0 - See LICENSE for more information.
This is not an official Google product.