open-telemetry / opentelemetry-propagation-server-timing
OpenTelemetry server-timing传播器。
0.0.3
2024-08-21 06:43 UTC
Requires
- php: ^8.0
- open-telemetry/context: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3
- guzzlehttp/promises: ^1.5
- nyholm/psr7: ^1.5
- open-telemetry/sdk: ^1.0
- phan/phan: ^5.0
- php-http/message-factory: ^1.0
- phpstan/phpstan: ^1.1
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- psalm/plugin-phpunit: ^0.18.4
- symfony/http-client: ^5.4|^6.0
- vimeo/psalm: ^4|^5
README
这是从 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