报价服务
该服务负责根据要运送的物品数量计算运费。报价服务通过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)