报价服务

该服务负责根据要运送的物品数量计算运费。报价服务通过HTTP从运输服务调用。

报价服务使用Slim框架和php-di实现依赖注入管理。

使用不同框架时,PHP仪表化可能会有所不同。

报价服务源代码

跟踪

初始化跟踪

在此演示中,OpenTelemetry SDK已作为SDK自动加载的一部分自动创建。

这是通过设置环境变量OTEL_PHP_AUTOLOAD_ENABLED=true来实现的。

require __DIR__ . '/../vendor/autoload.php';

有多种方法可以创建或获取Tracer,在本例中,我们从全局跟踪器提供程序中获取一个,该提供程序在SDK自动加载时进行了初始化:

$tracer = Globals::tracerProvider()->getTracer('手动仪表化');

手动创建跟踪

可以通过Tracer手动创建跟踪。该跟踪将默认为当前执行上下文中活动跟踪的子跟踪:

$span = Globals::tracerProvider()
    ->getTracer('手动仪表化')
    ->spanBuilder('计算报价')
    ->setSpanKind(SpanKind::KIND_INTERNAL)
    ->startSpan();
/* 计算报价 */
$span->end();

添加跟踪属性

可以使用OpenTelemetry\API\Trace\Span获取当前跟踪。

$span = Span::getCurrent();

使用跟踪对象的setAttribute方法即可向跟踪添加属性。在calculateQuote函数中,向childSpan添加了2个属性。

$childSpan->setAttribute('app.quote.items.count', $numberOfItems);
$childSpan->setAttribute('app.quote.cost.total', $quote);

添加跟踪事件

可以使用跟踪对象的addEvent来添加跟踪事件。在getquote路由中添加了跟踪事件。有些事件有附加属性,有些没有。

添加没有属性的跟踪事件:

$span->addEvent('收到获取报价请求,正在处理');

添加具有附加属性的跟踪事件:

$span->addEvent('报价处理完成,发送响应', [
    'app.quote.cost.total' => $payload
]);

指标

待定

日志

待定

最后修改 December 13, 2023: improve glossary translation (46f8201b)