open-telemetry/opentelemetry-propagation-server-timing

OpenTelemetry server-timing传播器。

0.0.3 2024-08-21 06:43 UTC

This package is auto-updated.

Last update: 2024-09-21 12:53:56 UTC


README

Releases Issues Source Mirror Latest Version Stable

这是从 https://github.com/open-telemetry/opentelemetry-php-contrib 分割出来的只读子树。

OpenTelemetry ServerTiming传播器

此包提供了一种Server-Timing传播器,用于将当前跨度上下文注入响应数据结构。

主要目标是允许客户端技术(真实用户监控、HTTP客户端)记录服务器端上下文,以便进行引用。

Server-Timing响应头对于此方法非常有用,因为它们在客户端是可访问的,即使在初始页面加载时也是如此。

需求

  • OpenTelemetry SDK和导出器(实际导出跟踪所需)

可选

  • OpenTelemetry扩展(某些仪器可以自动使用TraceResponsePropagator

用法

假设存在一个活动的SpanContext,您可以按照以下方式将其注入到您的响应中

// your framework probably provides a datastructure to model HTTP responses
// and allows you to hook into the end of a request / listen to a matching event.
$response = new Response();

// get the current scope, bail out if none
$scope = Context::storage()->scope();
if (null === $scope) {
    return;
}

// create a PropagationSetterInterface that knows how to inject response headers
$propagationSetter = new class implements OpenTelemetry\Context\Propagation\PropagationSetterInterface {
    public function set(&$carrier, string $key, string $value) : void {
        $carrier->headers->set($key, $value);
    }
};
$propagator = new ServerTimingPropagator();
$propagator->inject($response, $propagationSetter, $scope->context());

通过Composer安装

$ composer require open-telemetry/opentelemetry-propagation-server-timing

安装依赖项并执行测试

从TraceResponse子目录

$ composer install
$ ./vendor/bin/phpunit tests