PHP-Zipkin
This is an unofficial PHP library for OpenZipkin., (*1)
Require
Status
Incomplete, only has one transport with zero integrations. This library contains a very minimal implementation for just sending spans to zipkin., (*2)
Getting started
The recommended way to install PHP-Zipkin is through Composer, (*3)
composer require shlj/php-zipkin:^1.*
Example usage
<?php
$client = new \GuzzleHttp\Client();
$logger = new \Drefined\Zipkin\Transport\HTTPLogger($client);
$tracer = new \Drefined\Zipkin\Tracer($logger, 1.0, true);
$endpoint = new \Drefined\Zipkin\Core\Endpoint('127.0.0.1', 8080, 'test-trace');
$trace = new \Drefined\Zipkin\Core\Trace($tracer, $endpoint);
$trace->createNewSpan('test-server-trace');
$trace->record(
[Annotation::generateServerRecv()],
[BinaryAnnotation::generateString('server.request.uri', '/server')]
);
$trace->record(
[Annotation::generateServerSend()],
[BinaryAnnotation::generateString('server.response', 200)]
);
Laravel integration (simple)
Add middleware and service provider in proper locations., (*4)
<?php // laravel-project/app/Http/Kernel.php
namespace App\Http;
use ...
use Drefined\Zipkin\Instrumentation\Laravel\Middleware\EnableZipkinTracing;
class Kernel extends HttpKernel
{
...
protected $middleware = [
...
EnableZipkinTracing::class,
];
...
}
<?php // laravel-project/config/app.php
use Drefined\Zipkin\Instrumentation\Laravel\Providers\ZipkinTracingServiceProvider;
return [
...
'providers' => [
...
ZipkinTracingServiceProvider::class,
],
...
];
Lumen integration (simple)
Add middleware and service provider in proper locations., (*5)
<?php // lumen-project/app/bootstrap/app.php
require_once __DIR__.'/../vendor/autoload.php';
...
$app->middleware([
...
\Drefined\Zipkin\Instrumentation\Lumen\Middleware\EnableZipkinTracing::class
]);
...
// $app->register(App\Providers\AppServiceProvider::class);
$app->register(\Drefined\Zipkin\Instrumentation\Lumen\Providers\ZipkinTracingServiceProvider::class);
Todo
- Add Complete Laravel integration (currently supports a simple implementation without app environment configuration)
- Add Symfony integration
- Add Redis wrapper
- Add HTTP wrapper
- Add PDO wrapper
- Add Scribe transport
- Add Kafka transport
Inspired By
Reference
Generating PHP thrift classes
- ls thrift/ | xargs -I {} thrift --gen php thrift/{}
License
, (*6)
Contributors