This is a client-side library that can be used to instrument PHP apps for distributed trace collection, and to send those traces to Jaeger. See the OpenTracing PHP API for additional detail.
Please see CONTRIBUTING.md.
Jaeger client can be installed via Composer:
composer require jonahgeorge/jaeger-client-php
<?php
require_once 'vendor/autoload.php';
use Jaeger\Config;
use OpenTracing\GlobalTracer;
$config = new Config(
[
'sampler' => [
'type' => Jaeger\SAMPLER_TYPE_CONST,
'param' => true,
],
'logging' => true,
],
'your-app-name'
);
$config->initializeTracer();
$tracer = GlobalTracer::get();
$scope = $tracer->startActiveSpan('TestSpan', []);
$scope->close();
$tracer->flush();
List of supported samplers, for more info about samplers, please read Jaeger Sampling guide.
This sampler either samples everything, or nothing.
'sampler' => [
'type' => Jaeger\SAMPLER_TYPE_CONST,
'param' => true, // boolean wheter to trace or not
],
This sampler samples request by given rate.
'sampler' => [
'type' => Jaeger\SAMPLER_TYPE_PROBABILISTIC,
'param' => 0.5, // float [0.0, 1.0]
],
Samples maximum specified number of traces (requests) per second.
psr/cache
PSR-6 cache component to store and retrieve sampler state between requests. Cache component is passed toJaeger\Config
trough its constructor.hrtime()
function, that can retrieve time in nanoseconds. You need eitherphp 7.3
or PECL/hrtime extension.
'sampler' => [
'type' => Jaeger\SAMPLER_TYPE_RATE_LIMITING,
'param' => 100 // integer maximum number of traces per second,
'cache' => [
'currentBalanceKey' => 'rate.currentBalance' // string
'lastTickKey' => 'rate.lastTick' // string
]
],
Tests are located in the tests
directory. See tests/README.md.