a1comms / opencensus
OpenCensus Trace Client for PHP
Requires
- php: >=7.4
- cache/adapter-common: ~1
- psr/cache: ~1 || ~2 || ~3
- psr/log: ~1
- ramsey/uuid: ~3 || ~4
Suggests
- ext-opencensus: Enable tracing arbitrary functions.
- a1comms/opencensus-exporter-stackdriver: Export data to Stackdriver
- cache/apc-adapter: Enable QpsSampler to use apc cache.
- cache/apcu-adapter: Enable QpsSampler to use apcu cache.
- cache/memcached-adapter: Enable QpsSampler to use memcached cache.
- opencensus/opencensus-exporter-jaeger: Export data to Jaeger
- opencensus/opencensus-exporter-zipkin: Export data to Zipkin
Conflicts
- ext-opencensus: < 0.1.0
Replaces
This package is auto-updated.
Last update: 2024-04-03 15:22:50 UTC
README
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.
Installation & basic usage
-
Install the
opencensus/opencensus
package using composer:$ composer require opencensus/opencensus:~0.2
IMPORTANT: Please ensure your version is >= 0.2.0. There is a potential security vulnerability in < 0.2.0.
-
[Optional]: Install the
opencensus
extension from PECL:$ pecl install opencensus-alpha
Enable the extension in your
php.ini
:extension=opencensus.so
-
Initialize a tracer for your application:
use OpenCensus\Trace\Tracer; use OpenCensus\Trace\Exporter\EchoExporter; Tracer::start(new EchoExporter());
Usage
To add tracing to a block of code, you can use the closure/callable form or explicitly open and close spans yourself.
Closure/Callable (preferred)
$pi = Tracer::inSpan(['name' => 'expensive-operation'], function() { // some expensive operation return calculatePi(1000); }); $pi = Tracer::inSpan(['name' => 'expensive-operation'], 'calculatePi', [1000]);
Explicit Span Management
// 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(); }
Customization
Samplers
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
.
Exporters
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
.
Versioning
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
Contributing
Contributions to this library are always welcome and highly encouraged.
See CONTRIBUTING for more information on how to get started.
Releasing
See RELEASING for more information on releasing new versions.
License
Apache 2.0 - See LICENSE for more information.
Disclaimer
This is not an official Google product.