open-telemetry / opentelemetry-propagation-traceresponse
OpenTelemetry traceresponse 传播器。
0.0.3
2024-03-04 11:59 UTC
Requires
- php: ^7.0|^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.16
- symfony/http-client: ^5.4|^6.0
- vimeo/psalm: ^4.0
README
这是从https://github.com/open-telemetry/opentelemetry-php-contrib 分离出来的只读子树。
OpenTelemetry TraceResponse 传播器
注意: 由于 traceresponse
目前是编辑草案,因此此软件包为实验性质。
此软件包提供了一种 Trace Context HTTP 响应头格式 传播器,用于将当前跨度上下文注入到响应数据结构中。
主要目标是允许客户端技术(真实用户监控、HTTP 客户端)记录服务器端上下文,以便进行引用。
要求
- 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 TraceResponseProgator(); $propagator->inject($response, $propagationSetter, $scope->context());
通过 composer 安装
$ composer require open-telemetry/opentelemetry-propagation-traceresponse
安装依赖项并执行测试
从 TraceResponse 子目录
$ composer install $ ./vendor/bin/phpunit tests