open-telemetry / sampler-aws-xray
AWS X-Ray Remote Sampler for OpenTelemetry PHP Contrib
0.1.0
2025-08-27 01:03 UTC
Requires
- php: ^8.1
- aws/aws-sdk-php: ^3.0
- open-telemetry/api: ^1.1.0
- open-telemetry/sdk: ^1.1.0
- open-telemetry/sdk-configuration: ^0.0.5
- open-telemetry/sem-conv: ^1.32
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3
- phan/phan: ^5.0
- phpstan/phpstan: ^1.1
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^10 || ^11
- psalm/plugin-phpunit: ^0.19.2
- symfony/config: ^5.4 || ^6.4 || ^7.0
- symfony/yaml: ^6 || ^7
- vimeo/psalm: ^4|^5|6.4.0
README
Provides a sampler which can get sampling configurations from AWS X-Ray to make sampling decisions. See: AWS X-Ray Sampling
Installation
composer require open-telemetry/sampler-aws-xray
Configuration
You can configure the AWSXRayRemoteSampler
as per the following example.
Note that you will need to configure your OpenTelemetry Collector for
X-Ray remote sampling.
<?php declare(strict_types=1); require __DIR__ . '/vendor/autoload.php'; use OpenTelemetry\SDK\Trace\TracerProvider; use OpenTelemetry\SDK\Common\Attribute\Attributes; use OpenTelemetry\SDK\Trace\SpanExporter\ConsoleSpanExporterFactory; use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor; use OpenTelemetry\SDK\Resource\ResourceInfo; use OpenTelemetry\Contrib\Sampler\Xray\AWSXRayRemoteSampler; $resource = ResourceInfo::create(Attributes::create([ 'service.name' => 'MyServiceName', 'service.version'=> '1.0.0', 'cloud.provider' => 'aws', ])); $xraySampler = new AWSXRayRemoteSampler( $resource, 'http://localhost:2000', 2 ); $tracerProvider = TracerProvider::builder() ->setResource($resource) ->setSampler($xraySampler) ->addSpanProcessor( new SimpleSpanProcessor( (new ConsoleSpanExporterFactory())->create() ) ) ->build();