Skip to content

jcchavezs/zipkin-instrumentation-guzzle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zipkin instrumentation for Guzzle

CI Latest Stable Version Total Downloads License

Zipkin instrumentation for Guzzle HTTP Client.

Install

composer require jcchavezs/zipkin-instrumentation-guzzle

Usage

ZipkinGuzzle\Middleware is an Guzzle middleware that can be used along with GuzzleHttp\Client to create a span and propagate the context.

Default handler

You can use the default handler to easy the instrumentation:

use Zipkin\TracingBuilder;
use ZipkinGuzzle\Middleware;

$tracing = TracingBuilder::create()->build();

// Default tags for all spans being created. They are not mandatory.
$tags = [
   'instance' => $_SERVER['SERVER_NAME']
];

$client = new Client([
    'handler' => Middleware\handlerStack($tracing, $tags),
]);

Customizing handler

If you need to customize the tracing handler (e.g. wrapping it with another handler) you can create a GuzzleHttp\HandlerStack and push/unshift handlers into it making sure the tracing middleware stays at the top of the stack:

use GuzzleHttp\HandlerStack;
use Zipkin\TracingBuilder;
use ZipkinGuzzle\Middleware;

$tracing = TracingBuilder::create()->build();

$stack = HandlerStack::create();
$stack->push(someMiddleware());
...
$stack->push(Middleware\tracing($tracing));

$client = new Client([
    'handler' => $stack,
]);

Guzzle 7

Guzzle 7 is compatible with PSR18 clients, hence you can use the native Zipkin instrumentation. Check https://github.com/openzipkin/zipkin-php/tree/master/src/Zipkin/Instrumentation/Http/Client/Psr18#usage for more details.