https://github.com/jcchavezs/zipkin-instrumentation-guzzle
Zipkin instrumentation for Guzzle HTTP Client
https://github.com/jcchavezs/zipkin-instrumentation-guzzle
guzzle httpclient instrumentation zipkin zipkin-instrumentation
Last synced: about 1 month ago
JSON representation
Zipkin instrumentation for Guzzle HTTP Client
- Host: GitHub
- URL: https://github.com/jcchavezs/zipkin-instrumentation-guzzle
- Owner: jcchavezs
- License: mit
- Created: 2018-01-26T15:08:11.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-12-11T10:22:50.000Z (over 4 years ago)
- Last Synced: 2025-03-16T18:04:11.957Z (about 2 months ago)
- Topics: guzzle, httpclient, instrumentation, zipkin, zipkin-instrumentation
- Language: PHP
- Size: 29.3 KB
- Stars: 14
- Watchers: 2
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Zipkin instrumentation for Guzzle

[](https://packagist.org/packages/jcchavezs/zipkin-instrumentation-guzzle)
[](https://packagist.org/packages/jcchavezs/zipkin-instrumentation-guzzle)
[](https://packagist.org/packages/jcchavezs/zipkin-instrumentation-guzzle)Zipkin instrumentation for Guzzle HTTP Client.
## Install
```bash
composer require jcchavezs/zipkin-instrumentation-guzzle
```## Usage
`ZipkinGuzzle\Middleware` is an [Guzzle middleware](http://docs.guzzlephp.org/en/stable/handlers-and-middleware.html) 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:
```php
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**:
```php
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](https://github.com/guzzle/guzzle/blob/7.2.0/CHANGELOG.md#700-beta1---2019-12-30), 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.