From ba86dbd173ffd6e956fa5078a818bd84a3a6cbd7 Mon Sep 17 00:00:00 2001 From: dm Date: Sat, 26 Aug 2023 09:58:31 +0300 Subject: [PATCH] refactor redunant metrics --- README.md | 54 +++++++++++++++++++-------------------- src/Metrics/Counters.php | 2 +- src/Metrics/Debug.php | 2 +- src/Metrics/Labels.php | 2 +- src/Metrics/Metrics.php | 22 ++++++++-------- src/Metrics/Storage.php | 18 +++++-------- tests/Stub/AppMetrics.php | 2 +- 7 files changed, 48 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index 1b38f04..02aa111 100644 --- a/README.md +++ b/README.md @@ -27,38 +27,38 @@ http://localhost:8090/metrics ``` # HELP myapp_http_duration_seconds Histogram of HTTP request duration # TYPE myapp_http_duration_seconds histogram -myapp_http_duration_seconds_bucket{node="10.0.0.1",status="200",le="0.01"} 1 -myapp_http_duration_seconds_bucket{node="10.0.0.1",status="200",le="0.025"} 1 -myapp_http_duration_seconds_bucket{node="10.0.0.1",status="200",le="0.05"} 1 -myapp_http_duration_seconds_bucket{node="10.0.0.1",status="200",le="0.1"} 1 -myapp_http_duration_seconds_bucket{node="10.0.0.1",status="200",le="0.25"} 1 -myapp_http_duration_seconds_bucket{node="10.0.0.1",status="200",le="0.5"} 1 -myapp_http_duration_seconds_bucket{node="10.0.0.1",status="200",le="1"} 1 -myapp_http_duration_seconds_bucket{node="10.0.0.1",status="200",le="2.5"} 1 -myapp_http_duration_seconds_bucket{node="10.0.0.1",status="200",le="5"} 1 -myapp_http_duration_seconds_bucket{node="10.0.0.1",status="200",le="+Inf"} 1 -myapp_http_duration_seconds_count{node="10.0.0.1",status="200"} 1 -myapp_http_duration_seconds_sum{node="10.0.0.1",status="200"} 0.003229 +myapp_http_duration_seconds_bucket{node="10.0.0.1",le="0.01"} 1 +myapp_http_duration_seconds_bucket{node="10.0.0.1",le="0.025"} 1 +myapp_http_duration_seconds_bucket{node="10.0.0.1",le="0.05"} 1 +myapp_http_duration_seconds_bucket{node="10.0.0.1",le="0.1"} 1 +myapp_http_duration_seconds_bucket{node="10.0.0.1",le="0.25"} 1 +myapp_http_duration_seconds_bucket{node="10.0.0.1",le="0.5"} 1 +myapp_http_duration_seconds_bucket{node="10.0.0.1",le="1"} 1 +myapp_http_duration_seconds_bucket{node="10.0.0.1",le="2.5"} 1 +myapp_http_duration_seconds_bucket{node="10.0.0.1",le="5"} 1 +myapp_http_duration_seconds_bucket{node="10.0.0.1",le="+Inf"} 1 +myapp_http_duration_seconds_count{node="10.0.0.1"} 1 +myapp_http_duration_seconds_sum{node="10.0.0.1"} 0.003229 # HELP myapp_http_memory_usage_bytes Memory usage of bytes # TYPE myapp_http_memory_usage_bytes gauge myapp_http_memory_usage_bytes{node="10.0.0.1",route="api.books@read"} 5312296 # HELP myapp_http_memory_usage_bytes Histogram of HTTP memory usage in bytes # TYPE myapp_http_memory_usage_bytes histogram -myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",status="200",le="524288"} 0 -myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",status="200",le="1048576"} 0 -myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",status="200",le="1572864"} 0 -myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",status="200",le="2097152"} 0 -myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",status="200",le="2621440"} 0 -myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",status="200",le="3145728"} 0 -myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",status="200",le="3670016"} 0 -myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",status="200",le="4194304"} 0 -myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",status="200",le="4718592"} 0 -myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",status="200",le="5242880"} 0 -myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",status="200",le="10485760"} 1 -myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",status="200",le="15728640"} 1 -myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",status="200",le="+Inf"} 1 -myapp_http_memory_usage_bytes_count{node="10.0.0.1",status="200"} 1 -myapp_http_memory_usage_bytes_sum{node="10.0.0.1",status="200"} 5312296 +myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",le="524288"} 0 +myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",le="1048576"} 0 +myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",le="1572864"} 0 +myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",le="2097152"} 0 +myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",le="2621440"} 0 +myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",le="3145728"} 0 +myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",le="3670016"} 0 +myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",le="4194304"} 0 +myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",le="4718592"} 0 +myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",le="5242880"} 0 +myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",le="10485760"} 1 +myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",le="15728640"} 1 +myapp_http_memory_usage_bytes_bucket{node="10.0.0.1",le="+Inf"} 1 +myapp_http_memory_usage_bytes_count{node="10.0.0.1"} 1 +myapp_http_memory_usage_bytes_sum{node="10.0.0.1"} 5312296 # HELP myapp_http_requests_count Count HTTP requests processed # TYPE myapp_http_requests_count counter myapp_http_requests_count{node="10.0.0.1",route="api.books@read",status="200"} 1 diff --git a/src/Metrics/Counters.php b/src/Metrics/Counters.php index a2f3bd9..c9dcb34 100644 --- a/src/Metrics/Counters.php +++ b/src/Metrics/Counters.php @@ -4,7 +4,7 @@ class Counters { - private $counters = []; + private array $counters = []; public function increase(string $name, int $quantity = 1): void { diff --git a/src/Metrics/Debug.php b/src/Metrics/Debug.php index 454c739..86a0616 100644 --- a/src/Metrics/Debug.php +++ b/src/Metrics/Debug.php @@ -7,7 +7,7 @@ class Debug { - private $logger; + private LoggerInterface $logger; public function __construct(LoggerInterface $logger) { diff --git a/src/Metrics/Labels.php b/src/Metrics/Labels.php index 9a8128b..0370f86 100644 --- a/src/Metrics/Labels.php +++ b/src/Metrics/Labels.php @@ -4,7 +4,7 @@ class Labels { - private $labels = []; + private array $labels = []; public function __construct(array $labels) { diff --git a/src/Metrics/Metrics.php b/src/Metrics/Metrics.php index e23b7e8..9c1c6ca 100644 --- a/src/Metrics/Metrics.php +++ b/src/Metrics/Metrics.php @@ -11,23 +11,23 @@ class Metrics { - protected $namespace = "app"; + protected string $namespace = "app"; - private $httpRoute = "undefined"; - private $httpMethod = "undefined"; - private $httpStatus = 0; - private $labels; - private $runtime; - private $counters; - private $storage; + private string $httpRoute = "undefined"; + private string $httpMethod = "undefined"; + private int $httpStatus = 0; + private Labels $labels; + private Runtime $runtime; + private Counters $counters; + private Storage $storage; // 512k 1M 1.5M 2M 2.5M 3M 3.5M 4M 4.5M 5M 10M 15M - protected $memoryUsageBuckets = [ + protected array $memoryUsageBuckets = [ 524288, 1048576, 1572864, 2097152, 2621440, 3145728, 3670016, 4194304, 4718592, 5242880, 10485760, 15728640 ]; - protected $requestDurationBuckets = [ + protected array $requestDurationBuckets = [ 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5 ]; @@ -39,8 +39,8 @@ public function __construct( int $startTime, array $labels = [] ) { - $this->runtime = new Runtime($startTime); $this->labels = new Labels($labels); + $this->runtime = new Runtime($startTime); $this->counters = new Counters(); } diff --git a/src/Metrics/Storage.php b/src/Metrics/Storage.php index 2e0387a..649b82d 100644 --- a/src/Metrics/Storage.php +++ b/src/Metrics/Storage.php @@ -13,8 +13,8 @@ /** * Metrics: * - * _http_duration_seconds_bucket (status, le, ) - * _http_memory_usage_bytes_bucket (status, le, ) + * _http_duration_seconds_bucket (le, ) + * _http_memory_usage_bytes_bucket (le, ) * _http_memory_usage_bytes (route, ) * _http_requests_count (route, status, ) * _http_runtime_seconds (route, timer, ) @@ -22,7 +22,7 @@ */ class Storage { - private $registry; + private CollectorRegistry $registry; public function __construct(CollectorRegistry $registry) { @@ -105,8 +105,7 @@ private function persistRequestsCounter(Metrics $metrics): void private function persistMemoryUsage(Metrics $metrics): void { - $value = $metrics->memoryUsage(); - + $value = $metrics->memoryUsage(); $labels = $metrics->labels()->allWith([ "route" => $metrics->httpRoute() ]); @@ -119,10 +118,7 @@ private function persistMemoryUsage(Metrics $metrics): void ); $gauge->set($value, $labels); - - $labels = $metrics->labels()->allWith([ - "status" => $metrics->httpStatus() - ]); + $labels = $metrics->labels()->all(); $histogram = $this->registry->getOrRegisterHistogram( $metrics->namespace(), @@ -159,9 +155,7 @@ private function persistTimers(Metrics $metrics): void private function persistRequestDuration(Metrics $metrics): void { - $labels = $metrics->labels()->allWith([ - "status" => $metrics->httpStatus() - ]); + $labels = $metrics->labels()->all(); $histogram = $this->registry->getOrRegisterHistogram( $metrics->namespace(), diff --git a/tests/Stub/AppMetrics.php b/tests/Stub/AppMetrics.php index e1db2a2..e539faa 100644 --- a/tests/Stub/AppMetrics.php +++ b/tests/Stub/AppMetrics.php @@ -7,7 +7,7 @@ class AppMetrics extends Metrics { - protected $namespace = "myapp"; + protected string $namespace = "myapp"; public function startMongo(): void {