Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Zipkin instrumentation for Guzzle

CI Latest Stable Version Total Downloads License

Zipkin instrumentation for Guzzle HTTP Client.


composer require jcchavezs/zipkin-instrumentation-guzzle


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();

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

Guzzle 7

Guzzle 7 is compatible with PSR18 clients, hence you can use the native Zipkin instrumentation. Check for more details.