Skip to content

Commit 90aa893

Browse files
committed
bug fixes
1 parent 1c5a312 commit 90aa893

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

src/Instrumentation/ReactPHP/src/ReactPHPInstrumentation.php

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Composer\InstalledVersions;
88
use GuzzleHttp\Psr7\Query;
99
use OpenTelemetry\API\Common\Time\Clock;
10+
use OpenTelemetry\API\Common\Time\ClockInterface;
1011
use OpenTelemetry\API\Globals;
1112
use OpenTelemetry\API\Instrumentation\CachedInstrumentation;
1213
use OpenTelemetry\API\Trace\Span;
@@ -172,13 +173,22 @@ public static function register(): void
172173
return $promise;
173174
}
174175

176+
//https://opentelemetry.io/docs/specs/semconv/http/http-metrics/#http-client
177+
$requestDurationHistogram = $instrumentation->meter()->createHistogram(
178+
'http.client.request.duration',
179+
's',
180+
'Duration of HTTP client requests.',
181+
['ExplicitBucketBoundaries' => [0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10]]
182+
);
183+
175184
/** @psalm-var array{'http.request.method':non-empty-string|null,'server.address':non-empty-string,'server.port':int} */
176185
$requestMeta = $scope->offsetGet('requestMeta');
177186
$requestMeta['http.request.method'] ??= '_OTHER';
187+
/** @var int */
178188
$requestStart = $scope->offsetGet('requestStart');
179189

180190
return $promise->then(
181-
onFulfilled: function (ResponseInterface $response) use ($instrumentation, $requestMeta, $requestStart, $span) {
191+
onFulfilled: function (ResponseInterface $response) use ($requestDurationHistogram, $requestMeta, $requestStart, $span) {
182192
$requestEnd = Clock::getDefault()->now();
183193
/** @psalm-var array{'http.response.status_code':int,'network.protocol.version':non-empty-string,'error.type'?:non-empty-string} */
184194
$responseMeta = [
@@ -208,17 +218,14 @@ public static function register(): void
208218

209219
$span->end($requestEnd);
210220

211-
//https://opentelemetry.io/docs/specs/semconv/http/http-metrics/#http-client
212-
$instrumentation->meter()->createHistogram(
213-
'http.client.request.duration',
214-
's',
215-
'Duration of HTTP client requests.',
216-
['ExplicitBucketBoundaries' => [0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10]]
217-
)->record($requestEnd - $requestStart, array_merge($requestMeta, $responseMeta));
221+
$requestDurationHistogram->record(
222+
(float) (($requestEnd - $requestStart) / ClockInterface::NANOS_PER_SECOND),
223+
array_merge($requestMeta, $responseMeta)
224+
);
218225

219226
return $response;
220227
},
221-
onRejected: function (Throwable $t) use ($instrumentation, $requestMeta, $requestStart, $span) {
228+
onRejected: function (Throwable $t) use ($requestDurationHistogram, $requestMeta, $requestStart, $span) {
222229
$requestEnd = Clock::getDefault()->now();
223230
$span->recordException($t);
224231
if (is_a($t, ResponseException::class)) {
@@ -255,13 +262,10 @@ public static function register(): void
255262

256263
$span->end($requestEnd);
257264

258-
//https://opentelemetry.io/docs/specs/semconv/http/http-metrics/#http-client
259-
$instrumentation->meter()->createHistogram(
260-
'http.client.request.duration',
261-
's',
262-
'Duration of HTTP client requests.',
263-
['ExplicitBucketBoundaries' => [0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10]]
264-
)->record($requestEnd - $requestStart, array_merge($requestMeta, $responseMeta));
265+
$requestDurationHistogram->record(
266+
(float) (($requestEnd - $requestStart) / ClockInterface::NANOS_PER_SECOND),
267+
array_merge($requestMeta, $responseMeta)
268+
);
265269

266270
throw $t;
267271
}

0 commit comments

Comments
 (0)