Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions src/Instrumentation/CodeIgniter/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,16 @@
"php": "^8.1",
"ext-opentelemetry": "*",
"codeigniter4/framework": "^4.3",
"open-telemetry/api": "^1.0",
"open-telemetry/api": "^1.6",
"open-telemetry/sem-conv": "^1.32"
},
"suggest": {
"open-telemetry/opentelemetry-propagation-server-timing": "Automatically propagate the context to the client through server-timing headers.",
"open-telemetry/opentelemetry-propagation-traceresponse": "Automatically propagate the context to the client through trace-response headers."
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.50",
"open-telemetry/sdk": "^1.0",
"open-telemetry/sdk": "^1.8",
"phan/phan": "^5.0",
"php-http/mock-client": "*",
"phpstan/phpstan": "^1.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,21 +128,8 @@ public static function register(): void
$span->setStatus(StatusCode::STATUS_ERROR);
}

// Propagate server-timing header to response, if ServerTimingPropagator is present
if (class_exists('OpenTelemetry\Contrib\Propagation\ServerTiming\ServerTimingPropagator')) {
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
$prop = new \OpenTelemetry\Contrib\Propagation\ServerTiming\ServerTimingPropagator();
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
$prop->inject($response, ResponsePropagationSetter::instance(), $scope->context());
}

// Propagate traceresponse header to response, if TraceResponsePropagator is present
if (class_exists('OpenTelemetry\Contrib\Propagation\TraceResponse\TraceResponsePropagator')) {
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
$prop = new \OpenTelemetry\Contrib\Propagation\TraceResponse\TraceResponsePropagator();
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
$prop->inject($response, ResponsePropagationSetter::instance(), $scope->context());
}
$prop = Globals::responsePropagator();
$prop->inject($response, ResponsePropagationSetter::instance(), $scope->context());
}

$controller = $controllerProperty->getValue($igniter);
Expand Down
8 changes: 6 additions & 2 deletions src/Instrumentation/Laravel/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,18 @@
"ext-json": "*",
"ext-opentelemetry": "*",
"laravel/framework": "^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0",
"open-telemetry/api": "^1.0",
"open-telemetry/api": "^1.6",
"open-telemetry/sem-conv": "^1.32"
},
"suggest": {
"open-telemetry/opentelemetry-propagation-server-timing": "Automatically propagate the context to the client through server-timing headers.",
"open-telemetry/opentelemetry-propagation-traceresponse": "Automatically propagate the context to the client through trace-response headers."
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.50",
"guzzlehttp/guzzle": "*",
"nunomaduro/collision": "*",
"open-telemetry/sdk": "^1.0",
"open-telemetry/sdk": "^1.8",
"orchestra/testbench": ">=7.41.3",
"phan/phan": "^5.0",
"php-http/mock-client": "*",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,21 +99,9 @@ protected function hookHandle(): bool
$span->setAttribute(TraceAttributes::NETWORK_PROTOCOL_VERSION, $response->getProtocolVersion());
$span->setAttribute(TraceAttributes::HTTP_RESPONSE_BODY_SIZE, $response->headers->get('Content-Length'));

// Propagate server-timing header to response, if ServerTimingPropagator is present
if (class_exists('OpenTelemetry\Contrib\Propagation\ServerTiming\ServerTimingPropagator')) {
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
$prop = new \OpenTelemetry\Contrib\Propagation\ServerTiming\ServerTimingPropagator();
/** @phan-suppress-next-line PhanAccessMethodInternal,PhanUndeclaredClassMethod */
$prop->inject($response, ResponsePropagationSetter::instance(), $scope->context());
}

// Propagate traceresponse header to response, if TraceResponsePropagator is present
if (class_exists('OpenTelemetry\Contrib\Propagation\TraceResponse\TraceResponsePropagator')) {
/** @phan-suppress-next-line PhanUndeclaredClassMethod */
$prop = new \OpenTelemetry\Contrib\Propagation\TraceResponse\TraceResponsePropagator();
/** @phan-suppress-next-line PhanAccessMethodInternal,PhanUndeclaredClassMethod */
$prop->inject($response, ResponsePropagationSetter::instance(), $scope->context());
}
$prop = Globals::responsePropagator();
/** @phan-suppress-next-line PhanAccessMethodInternal */
$prop->inject($response, ResponsePropagationSetter::instance(), $scope->context());
}

$this->endSpan($exception);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@
use OpenTelemetry\API\Trace\SpanKind;
use OpenTelemetry\API\Trace\StatusCode;
use OpenTelemetry\Context\Context;
use OpenTelemetry\SemConv\TraceAttributes;
use OpenTelemetry\SemConv\Attributes\DbAttributes;
use OpenTelemetry\SemConv\Attributes\NetworkAttributes;
use OpenTelemetry\SemConv\Attributes\ServerAttributes;
use Throwable;

/**
Expand Down Expand Up @@ -86,14 +88,14 @@ public function commandStarted(CommandStartedEvent $event): void

$builder = self::startSpan($this->instrumentation, 'MongoDB ' . $scopedCommand)
->setSpanKind(SpanKind::KIND_CLIENT)
->setAttribute(TraceAttributes::DB_SYSTEM_NAME, 'mongodb')
->setAttribute(TraceAttributes::DB_NAMESPACE, $databaseName)
->setAttribute(TraceAttributes::DB_OPERATION_NAME, $commandName)
->setAttribute(TraceAttributes::SERVER_ADDRESS, $isSocket ? null : $host)
->setAttribute(TraceAttributes::SERVER_PORT, $isSocket ? null : $port)
->setAttribute(TraceAttributes::NETWORK_TRANSPORT, $isSocket ? 'unix' : 'tcp')
->setAttribute(TraceAttributes::DB_QUERY_TEXT, ($this->commandSerializer)($command))
->setAttribute(TraceAttributes::DB_COLLECTION_NAME, $collectionName)
->setAttribute(DbAttributes::DB_SYSTEM_NAME, 'mongodb')
->setAttribute(DbAttributes::DB_NAMESPACE, $databaseName)
->setAttribute(DbAttributes::DB_OPERATION_NAME, $commandName)
->setAttribute(ServerAttributes::SERVER_ADDRESS, $isSocket ? null : $host)
->setAttribute(ServerAttributes::SERVER_PORT, $isSocket ? null : $port)
->setAttribute(NetworkAttributes::NETWORK_TRANSPORT, $isSocket ? 'unix' : 'tcp')
->setAttribute(DbAttributes::DB_QUERY_TEXT, ($this->commandSerializer)($command))
->setAttribute(DbAttributes::DB_COLLECTION_NAME, $collectionName)
->setAttribute(MongoDBTraceAttributes::DB_MONGODB_REQUEST_ID, $event->getRequestId())
->setAttribute(MongoDBTraceAttributes::DB_MONGODB_OPERATION_ID, $event->getOperationId())
->setAttributes($attributes)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
use OpenTelemetry\SDK\Trace\SpanExporter\InMemoryExporter;
use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor;
use OpenTelemetry\SDK\Trace\TracerProvider;
use OpenTelemetry\SemConv\TraceAttributes;
use OpenTelemetry\SemConv\Attributes\DbAttributes;
use OpenTelemetry\SemConv\Attributes\NetworkAttributes;
use OpenTelemetry\SemConv\Attributes\ServerAttributes;
use PHPUnit\Framework\TestCase;

class MongoDBInstrumentationTest extends TestCase
Expand Down Expand Up @@ -69,13 +71,13 @@ public function test_mongodb_find_one(): void
self::assertSame('MongoDB coll.find', $this->span->getName());
self::assertSame(SpanKind::KIND_CLIENT, $this->span->getKind());
$attributes = $this->span->getAttributes();
self::assertSame('mongodb', $attributes->get(TraceAttributes::DB_SYSTEM_NAME));
self::assertSame(self::DATABASE_NAME, $attributes->get(TraceAttributes::DB_NAMESPACE));
self::assertSame('find', $attributes->get(TraceAttributes::DB_OPERATION_NAME));
self::assertSame(self::COLLECTION_NAME, $attributes->get(TraceAttributes::DB_COLLECTION_NAME));
self::assertSame($this->host, $attributes->get(TraceAttributes::SERVER_ADDRESS));
self::assertSame($this->port, $attributes->get(TraceAttributes::SERVER_PORT));
self::assertSame('tcp', $attributes->get(TraceAttributes::NETWORK_TRANSPORT));
self::assertSame('mongodb', $attributes->get(DbAttributes::DB_SYSTEM_NAME));
self::assertSame(self::DATABASE_NAME, $attributes->get(DbAttributes::DB_NAMESPACE));
self::assertSame('find', $attributes->get(DbAttributes::DB_OPERATION_NAME));
self::assertSame(self::COLLECTION_NAME, $attributes->get(DbAttributes::DB_COLLECTION_NAME));
self::assertSame($this->host, $attributes->get(ServerAttributes::SERVER_ADDRESS));
self::assertSame($this->port, $attributes->get(ServerAttributes::SERVER_PORT));
self::assertSame('tcp', $attributes->get(NetworkAttributes::NETWORK_TRANSPORT));
self::assertTrue($attributes->get(MongoDBTraceAttributes::DB_MONGODB_MASTER));
self::assertFalse($attributes->get(MongoDBTraceAttributes::DB_MONGODB_READ_ONLY));
self::assertIsNumeric($attributes->get(MongoDBTraceAttributes::DB_MONGODB_CONNECTION_ID));
Expand Down
10 changes: 6 additions & 4 deletions src/Instrumentation/Slim/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,25 @@
"php": "^8.1",
"ext-opentelemetry": "*",
"ext-reflection": "*",
"open-telemetry/api": "^1.0",
"open-telemetry/api": "^1.6",
"open-telemetry/sem-conv": "^1.36",
"slim/slim": "^4"
},
"suggest": {
"open-telemetry/opentelemetry-propagation-server-timing": "Automatically propagate the context to the client through server-timing headers.",
"open-telemetry/opentelemetry-propagation-traceresponse": "Automatically propagate the context to the client through trace-response headers."
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3",
"mockery/mockery": "^1.5",
"nyholm/psr7": "*",
"open-telemetry/opentelemetry-propagation-server-timing": "*",
"open-telemetry/opentelemetry-propagation-traceresponse": "*",
"phan/phan": "^5.0",
"php-http/mock-client": "*",
"phpstan/phpstan-mockery": "^1.1.0",
"phpstan/phpstan": "^1.1",
"phpstan/phpstan-phpunit": "^1.0",
"psalm/plugin-phpunit": "^0.19.2",
"open-telemetry/sdk": "^1.0",
"open-telemetry/sdk": "^1.8",
"phpunit/phpunit": "^9.5",
"vimeo/psalm": "6.4.0"
},
Expand Down
13 changes: 2 additions & 11 deletions src/Instrumentation/Slim/src/SlimInstrumentation.php
Original file line number Diff line number Diff line change
Expand Up @@ -104,17 +104,8 @@ public static function register(): void
$span->setAttribute(HttpIncubatingAttributes::HTTP_RESPONSE_BODY_SIZE, $response->getHeaderLine('Content-Length'));

if (self::$supportsResponsePropagation) {
// Propagate server-timing header to response, if ServerTimingPropagator is present
if (class_exists('OpenTelemetry\Contrib\Propagation\ServerTiming\ServerTimingPropagator')) {
$prop = new \OpenTelemetry\Contrib\Propagation\ServerTiming\ServerTimingPropagator();
$prop->inject($response, PsrResponsePropagationSetter::instance(), $scope->context());
}

// Propagate traceresponse header to response, if TraceResponsePropagator is present
if (class_exists('OpenTelemetry\Contrib\Propagation\TraceResponse\TraceResponsePropagator')) {
$prop = new \OpenTelemetry\Contrib\Propagation\TraceResponse\TraceResponsePropagator();
$prop->inject($response, PsrResponsePropagationSetter::instance(), $scope->context());
}
$prop = Globals::responsePropagator();
$prop->inject($response, PsrResponsePropagationSetter::instance(), $scope->context());
}
}
$span->end();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,6 @@ public function test_response_propagation(): void
$response = $app->handle($request);
$this->assertCount(1, $this->storage);
$this->assertArrayHasKey('X-Foo', $response->getHeaders());
$this->assertArrayHasKey('server-timing', $response->getHeaders());
$this->assertStringStartsWith('traceparent;desc=', $response->getHeaderLine('server-timing'));
$this->assertArrayHasKey('traceresponse', $response->getHeaders());
}

public function createMockStrategy(): InvocationStrategyInterface
Expand Down
8 changes: 3 additions & 5 deletions src/Instrumentation/Symfony/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"require": {
"php": "^8.1",
"ext-opentelemetry": "*",
"open-telemetry/api": "^1.0",
"open-telemetry/api": "^1.6",
"open-telemetry/sem-conv": "^1.32",
"symfony/http-kernel": "*",
"symfony/http-client-contracts": "*"
Expand All @@ -27,13 +27,11 @@
"phpstan/phpstan": "^1.1",
"phpstan/phpstan-phpunit": "^1.0",
"psalm/plugin-phpunit": "^0.19.2",
"open-telemetry/sdk": "^1.0",
"open-telemetry/sdk": "^1.8",
"phpunit/phpunit": "^9.5",
"vimeo/psalm": "6.4.0",
"symfony/http-client": "^5.4||^6.0",
"symfony/messenger": "^5.4||^6.0",
"open-telemetry/opentelemetry-propagation-traceresponse": "*",
"open-telemetry/opentelemetry-propagation-server-timing": "*"
"symfony/messenger": "^5.4||^6.0"
},
"autoload": {
"psr-4": {
Expand Down
13 changes: 2 additions & 11 deletions src/Instrumentation/Symfony/src/SymfonyInstrumentation.php
Original file line number Diff line number Diff line change
Expand Up @@ -138,17 +138,8 @@ public static function register(): void

$span->setAttribute(TraceAttributes::HTTP_RESPONSE_BODY_SIZE, $contentLength);

// Propagate server-timing header to response, if ServerTimingPropagator is present
if (class_exists('OpenTelemetry\Contrib\Propagation\ServerTiming\ServerTimingPropagator')) {
$prop = new \OpenTelemetry\Contrib\Propagation\ServerTiming\ServerTimingPropagator();
$prop->inject($response, ResponsePropagationSetter::instance(), $scope->context());
}

// Propagate traceresponse header to response, if TraceResponsePropagator is present
if (class_exists('OpenTelemetry\Contrib\Propagation\TraceResponse\TraceResponsePropagator')) {
$prop = new \OpenTelemetry\Contrib\Propagation\TraceResponse\TraceResponsePropagator();
$prop->inject($response, ResponsePropagationSetter::instance(), $scope->context());
}
$prop = Globals::responsePropagator();
$prop->inject($response, ResponsePropagationSetter::instance(), $scope->context());

$span->end();
}
Expand Down
Loading