auxmoney/jaeger-php

Jaeger的PHP客户端


README

Tests Minimum PHP Version License Coverage Status

注意:这是一个分支和重新发布自 jukylin/jaeger-php

我们选择分支并发布原始库是为了维护我们的与opentracing相关的symfony捆绑包集。原始库目前似乎没有维护。

jaeger-php是一个库,实现了OpenTracing规范以连接到Jaeger分布式追踪平台。它可以用来对PHP代码进行仪器化,生成追踪数据并将其发送到Jaeger。

安装

composer require auxmoney/jaeger-php

用法

首先,你需要创建一个Config对象,它作为创建你的Tracer的工厂

// create a config instance
$config = \Jaeger\Config::getInstance();
// create a tracer
$tracer = $config->initTracer('example service name', '0.0.0.0:6831');

为了使分布式追踪工作,你需要从某处提取你的SpanContext,例如$_SERVER

$spanContext = $tracer->extract(\Opentracing\Formats\TEXT_MAP, $_SERVER);

然后你可以通过使用常见的Opentracing接口开始追踪

$tracer->startActiveSpan("example operation name", ['child_of' => $spanContext]);

为了向你的span添加元数据,你需要先检索它(请确保首先检查语义约定

$span = $tracer->getActiveSpan();
$span->addBaggageItem("user_id", "12345");
$span->setTag("http.url", "https://");
$span->log(["message" => "responded successfully"]);
$span->finish();

最后,在脚本结束时,你应该刷新原始的Config。这将刷新所有创建的Tracer和所有创建的Span

$config->flush();

可选配置

// optional: generate 128 bit trace ids (default: false)
$config->gen128bit();
// optional: disable tracing (default: false)
$config->setDisabled(true);
// optional: inject custom transport (default: TransportUdp)
$config->setTransport($transport);
// optional: inject custom reporter (default: RemoteReporter)
$config->setReporter($reporter);
// optional: inject custom sampler (default: ConstSampler)
$config->setSampler($sampler);

特别感谢

感谢@jukylin创建这个库!