liuchenrang / zipkin-php

Zipkin v2 instrumentation for PHP

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Zipkin instrumentation for PHP

Build Status Minimum PHP Version Total Downloads License

This is a production ready PHP library for Zipkin.

Installation

composer require jcchavezs/zipkin

Example usage

This is a simple example of usage, for a more complete frontend/backend example, check this repository.

use GuzzleHttp\Client;
use Zipkin\Annotation;
use Zipkin\Endpoint;
use Zipkin\Propagation\DefaultSamplingFlags;
use Zipkin\Samplers\BinarySampler;
use Zipkin\Timestamp;
use Zipkin\TracingBuilder;
use Zipkin\Reporters\HttpLogging;

$endpoint = Endpoint::createFromGlobals();
$client = new Client();

// Logger to stdout
$logger = new \Monolog\Logger('log');
$logger->pushHandler(new \Monolog\Handler\ErrorLogHandler());

$reporter = new HttpLogging($client, $logger);
$sampler = BinarySampler::createAsAlwaysSample();
$tracing = TracingBuilder::create()
    ->havingLocalEndpoint($endpoint)
    ->havingSampler($sampler)
    ->havingReporter($reporter)
    ->build();

$tracer = $tracing->getTracer();

$defaultSamplingFlags = DefaultSamplingFlags::createAsSampled();
$span = $tracer->newTrace($defaultSamplingFlags);
$span->start(Timestamp\now());
$span->setName('my_span_name');
$span->annotate(Annotation::SERVER_RECEIVE, Timestamp\now());

...

$childSpan = $tracer->newChild($span->getContext());
$childSpan->start();
$childSpan->setName('my_child_span');
$childSpan->annotate(Annotation::CLIENT_SEND, Timestamp\now());

...

$childSpan->finish(Timestamp\now());

$span->finish(Timestamp\now());

$tracer->flush();

Tests

Tests can be run by

composer test

Reference

About

Zipkin v2 instrumentation for PHP

License:MIT License


Languages

Language:PHP 100.0%