jcchavezs/zipkin-instrumentation-guzzle

Zipkin instrumentation for Guzzle HTTP Client

2.0.0 2020-12-10 09:02 UTC

This package is auto-updated.

Last update: 2024-12-11 19:04:56 UTC


README

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.