From d0d55edf0dd4bb366a6540ed9d842761eff351e9 Mon Sep 17 00:00:00 2001 From: Eugen Gorbunov Date: Thu, 29 Aug 2024 13:18:08 +0400 Subject: [PATCH 1/3] Align OTEL http attributes with latest standard --- src/GuzzleRequestAdapter.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/GuzzleRequestAdapter.php b/src/GuzzleRequestAdapter.php index 3ea0b44..0716f21 100644 --- a/src/GuzzleRequestAdapter.php +++ b/src/GuzzleRequestAdapter.php @@ -438,13 +438,13 @@ public function getPsrRequestFromRequestInformation(RequestInformation $requestI $scope = $psrRequestFromInfoSpan->activate(); try { $requestInformation->pathParameters["baseurl"] = $this->getBaseUrl(); - $span->setAttribute('http.method', $requestInformation->httpMethod); - $span->setAttribute('http.scheme', explode(':', $requestInformation->getUri())[0]); + $span->setAttribute('http.request.method', $requestInformation->httpMethod); + $span->setAttribute('server.address', explode(':', $requestInformation->getUri())[0]); if ($this->getObservabilityOptionsFromRequest($requestInformation)->getIncludeEUIIAttributes()) { - $span->setAttribute('http.uri', $requestInformation->getUri()); + $span->setAttribute('url.full', $requestInformation->getUri()); } if (!empty($requestInformation->content)) { - $span->setAttribute('http.request_content_length?', $requestInformation->content->getSize()); + $span->setAttribute('http.request.body.size?', $requestInformation->content->getSize()); } $result = new Request( @@ -718,9 +718,9 @@ private function startTracingSpan(RequestInformation $requestInfo, string $metho $decUriTemplate = ParametersNameDecodingHandler::decodeUriEncodedString($requestInfo->urlTemplate, $parametersToDecode); $telemetryPathValue = empty($decUriTemplate) ? '' : preg_replace($queryReg, '', $decUriTemplate); $span = $this->tracer->spanBuilder("$methodName - $telemetryPathValue")->startSpan(); - $span->setAttribute("http.uri_template", $decUriTemplate); - $span->setAttribute('http.method', $requestInfo->httpMethod); - $span->setAttribute('http.request_content_type?', $requestInfo->getHeaders()->get(RequestInformation::$contentTypeHeader)); + $span->setAttribute("url.uri_template", $decUriTemplate); + $span->setAttribute('http.request.method', $requestInfo->httpMethod); + $span->setAttribute('http.request.header.content-type?', $requestInfo->getHeaders()->get(RequestInformation::$contentTypeHeader)); return $span; } @@ -731,9 +731,9 @@ private function startTracingSpan(RequestInformation $requestInfo, string $metho */ private function setHttpResponseAttributesInSpan(SpanInterface $span, ResponseInterface $response): void { - $span->setAttribute('http.status_code', $response->getStatusCode()); - $span->setAttribute('http.flavor', $response->getProtocolVersion()); - $span->setAttribute('http.response_content_type?', $response->getHeaderLine('Content-Type')); + $span->setAttribute('http.response.status_code', $response->getStatusCode()); + $span->setAttribute('network.protocol.version', $response->getProtocolVersion()); + $span->setAttribute('http.response.header.content-type?', $response->getHeaderLine('Content-Type')); } /** From c41dd3eeb6d64c640208a3a1bbbaa1f9da5181aa Mon Sep 17 00:00:00 2001 From: Eugen Gorbunov Date: Sun, 1 Sep 2024 01:44:43 +0400 Subject: [PATCH 2/3] Update OTEL attributes in RetryHandler class --- src/Middleware/RetryHandler.php | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Middleware/RetryHandler.php b/src/Middleware/RetryHandler.php index 1c431c3..bcbe54b 100644 --- a/src/Middleware/RetryHandler.php +++ b/src/Middleware/RetryHandler.php @@ -39,7 +39,10 @@ class RetryHandler public const HANDLER_NAME = 'kiotaRetryHandler'; private const RETRY_AFTER_HEADER = "Retry-After"; private const RETRY_ATTEMPT_HEADER = "Retry-Attempt"; - + private const RESEND_COUNT_ATTRIBUTE = "http.request.resend_count"; + private const RESEND_DELAY_ATTRIBUTE = "http.request.resend_delay"; + private const STATUS_CODE_ATTRIBUTE = "http.response.status_code"; + /** * @var TracerInterface */ @@ -114,9 +117,11 @@ private function onFulfilled(RequestInterface $request, array $options, SpanInte return $response; } $retries = $this->getRetries($request); - $span->setAttribute('retryCount', $retries); + $span->setAttribute(self::RESEND_COUNT_ATTRIBUTE, $retries); $delaySecs = $this->calculateDelay($retries, $response); - $span->setAttribute('delaySeconds', $delaySecs); + $span->setAttribute(self::RESEND_DELAY_ATTRIBUTE, $delaySecs); + $statusCode = $response->getStatusCode(); + $span->setAttribute(self::STATUS_CODE_ATTRIBUTE, $statusCode); $fullFilledSpan->setStatus(StatusCode::STATUS_OK, 'RetryFullFilled'); if (!$this->shouldRetry($request, $retries, $delaySecs, $response, $span) || $this->exceedRetriesTimeLimit($delaySecs)) { @@ -158,9 +163,11 @@ private function onRejected(RequestInterface $request, array $options, SpanInter } $retries = $this->getRetries($request); - $rejectedSpan->setAttribute('http.retry_count', $retries); + $rejectedSpan->setAttribute(self::RESEND_COUNT_ATTRIBUTE, $retries); $delaySecs = $this->calculateDelay($retries, $reason->getResponse()); - $rejectedSpan->setAttribute('delaySeconds', $delaySecs); + $rejectedSpan->setAttribute(self::RESEND_DELAY_ATTRIBUTE, $delaySecs); + $statusCode = $reason->getResponse()->getStatusCode(); + $span->setAttribute(self::STATUS_CODE_ATTRIBUTE, $statusCode); if (!$this->shouldRetry($request, $retries, $delaySecs, $reason->getResponse(), $span) || $this->exceedRetriesTimeLimit($delaySecs)) { Create::rejectionFor($reason); From fc04cb735bfed1c710ac489a11dba179be937dbb Mon Sep 17 00:00:00 2001 From: Eugen Gorbunov Date: Wed, 4 Sep 2024 15:40:20 +0400 Subject: [PATCH 3/3] Update changelog and version constant --- CHANGELOG.md | 5 +++++ src/Constants.php | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac0130a..4a204e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +## [1.2.1] - 2024-09-04 + +### Changed +- Align OTEL http attributes with latest standard + ## [1.2.0] ### Changed diff --git a/src/Constants.php b/src/Constants.php index 068491e..6601934 100644 --- a/src/Constants.php +++ b/src/Constants.php @@ -5,5 +5,5 @@ final class Constants { /** @var string The current version for this Library */ - public const KIOTA_HTTP_CLIENT_VERSION = '1.2.0'; + public const KIOTA_HTTP_CLIENT_VERSION = '1.2.1'; }