jcchavezs / zipkin-instrumentation-guzzle
Zipkin instrumentation for Guzzle HTTP Client
Installs: 71 150
Dependents: 0
Suggesters: 0
Security: 0
Stars: 13
Watchers: 2
Forks: 4
Open Issues: 2
Requires
- guzzlehttp/guzzle: ~6.2 || ^7.0
- openzipkin/zipkin: ^2.0
Requires (Dev)
- phpunit/phpunit: ^7.0
- squizlabs/php_codesniffer: ^3.0@dev
README
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.