Skip to content

Commit 24d88a9

Browse files
feat(metrics): add http latency
1 parent 1c17173 commit 24d88a9

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

src/Middleware/MetricCollector.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
use Prometheus\Counter;
77
use Illuminate\Http\Request;
88
use Prometheus\CollectorRegistry;
9+
use Prometheus\Histogram;
910

1011
class MetricCollector
1112
{
1213
protected Counter $http_request_counter;
14+
protected Histogram $http_latency_histogram;
1315

1416
public function __construct(CollectorRegistry $collectorRegistry)
1517
{
@@ -22,6 +24,14 @@ public function __construct(CollectorRegistry $collectorRegistry)
2224
'HTTP request Total', // Counter Help string
2325
['path'], // Counter labels
2426
);
27+
28+
$this->http_latency_histogram = $collectorRegistry->getOrRegisterHistogram(
29+
config('prometheus.namespace'), // Counter namespace
30+
'http_request_latency_seconds', // Counter name
31+
'Latency of HTTP requests.', // Counter Help string
32+
['path'],
33+
[0.1, 0.3, 0.5, 0.7, 0.9]
34+
);
2535
}
2636

2737
/**
@@ -33,6 +43,9 @@ public function __construct(CollectorRegistry $collectorRegistry)
3343
*/
3444
public function handle(Request $request, Closure $next)
3545
{
46+
// Record start time
47+
$start = microtime(true);
48+
3649
$response = $next($request);
3750

3851
// Skip metric collect
@@ -44,6 +57,10 @@ public function handle(Request $request, Closure $next)
4457
// Increase the number of http requests by 1 for label uri
4558
$this->http_request_counter->incBy(1 , [$request->route()->uri]);
4659

60+
// Observe latency of http requests by label uri
61+
$latency = \microtime(true) - $start;
62+
$this->http_latency_histogram->observe($latency,[$request->route()->uri]);
63+
4764
return $response;
4865
}
4966

0 commit comments

Comments
 (0)