Skip to content

Commit f1edfdb

Browse files
committed
chore: review feedback
1 parent 9d4b8f2 commit f1edfdb

File tree

3 files changed

+48
-78
lines changed

3 files changed

+48
-78
lines changed

composer.lock

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/App.php

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
namespace Utopia;
44

55
use Utopia\Telemetry\Adapter as Telemetry;
6-
use Utopia\Telemetry\Adapter\Noop as NoopTelemetry;
6+
use Utopia\Telemetry\Adapter\None as NoTelemetry;
7+
use Utopia\Telemetry\Histogram;
8+
use Utopia\Telemetry\UpDownCounter;
79

810
class App
911
{
@@ -114,7 +116,10 @@ class App
114116
protected int $compressionMinSize = App::COMPRESSION_MIN_SIZE_DEFAULT;
115117
protected mixed $compressionSupported = [];
116118

117-
protected Metrics $metrics;
119+
private Histogram $requestDuration;
120+
private UpDownCounter $activeRequests;
121+
private Histogram $requestBodySize;
122+
private Histogram $responseBodySize;
118123

119124
/**
120125
* App
@@ -124,7 +129,7 @@ class App
124129
public function __construct(string $timezone)
125130
{
126131
\date_default_timezone_set($timezone);
127-
$this->metrics = new Metrics(new NoopTelemetry());
132+
$this->setTelemetry(new NoTelemetry());
128133
}
129134

130135
/**
@@ -159,7 +164,20 @@ public function setCompressionSupported(mixed $compressionSupported)
159164
*/
160165
public function setTelemetry(Telemetry $telemetry)
161166
{
162-
$this->metrics = new Metrics($telemetry);
167+
// https://opentelemetry.io/docs/specs/semconv/http/http-metrics/#metric-httpserverrequestduration
168+
$this->requestDuration = $telemetry->createHistogram(
169+
'http.server.request.duration',
170+
's',
171+
null,
172+
['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]]
173+
);
174+
175+
// https://opentelemetry.io/docs/specs/semconv/http/http-metrics/#metric-httpserveractive_requests
176+
$this->activeRequests = $telemetry->createUpDownCounter('http.server.active_requests', '{request}');
177+
// https://opentelemetry.io/docs/specs/semconv/http/http-metrics/#metric-httpserverrequestbodysize
178+
$this->requestBodySize = $telemetry->createHistogram('http.server.request.body.size', 'By');
179+
// https://opentelemetry.io/docs/specs/semconv/http/http-metrics/#metric-httpserverresponsebodysize
180+
$this->responseBodySize = $telemetry->createHistogram('http.server.response.body.size', 'By');
163181
}
164182

165183
/**
@@ -686,14 +704,28 @@ protected function getArguments(Hook $hook, array $values, array $requestParams)
686704
*/
687705
public function run(Request $request, Response $response): static
688706
{
689-
$this->metrics->increaseActiveRequest($request);
707+
$this->activeRequests->add(1, [
708+
'http.request.method' => $request->getMethod(),
709+
'url.scheme' => $request->getProtocol(),
710+
]);
690711

691712
$start = microtime(true);
692713
$result = $this->runInternal($request, $response);
693714

694715
$requestDuration = microtime(true) - $start;
695-
$this->metrics->recordMetrics($request, $response, $this->getRoute(), $requestDuration);
696-
$this->metrics->decreaseActiveRequest($request);
716+
$attributes = [
717+
'url.scheme' => $request->getProtocol(),
718+
'http.request.method' => $request->getMethod(),
719+
'http.route' => $this->getRoute()?->getPath(),
720+
'http.response.status_code' => $response->getStatusCode(),
721+
];
722+
$this->requestDuration->record($requestDuration, $attributes);
723+
$this->requestBodySize->record($request->getSize(), $attributes);
724+
$this->responseBodySize->record($response->getSize(), $attributes);
725+
$this->activeRequests->add(-1, [
726+
'http.request.method' => $request->getMethod(),
727+
'url.scheme' => $request->getProtocol(),
728+
]);
697729

698730
return $result;
699731
}

src/Metrics.php

Lines changed: 0 additions & 62 deletions
This file was deleted.

0 commit comments

Comments
 (0)