diff --git a/.gitlab/development-values.yaml b/.gitlab/development-values.yaml index 66028e145be4f518daef5729b1e732a3bf2ce1af..1a756bdf674a82cb4ea5b816851e6bd00bb1dfd8 100644 --- a/.gitlab/development-values.yaml +++ b/.gitlab/development-values.yaml @@ -8,10 +8,14 @@ podDisruptionBudget: enabled: true minAvailable: 1 maxUnavailable: +podAnnotations: + prometheus.io/scrape: "true" + prometheus.io/path: /metrics + prometheus.io/port: "80" ingress: annotations: certmanager.k8s.io/cluster-issuer: letsencrypt-prod nginx.ingress.kubernetes.io/configuration-snippet: | if ($host = "www.metager3.de") { return 301 https://metager3.de$request_uri; - } \ No newline at end of file + } diff --git a/.gitlab/production-values.yaml b/.gitlab/production-values.yaml index 1855172fc1919d5d85da663e5b507c9f7bc3b793..9d9541ad96b961592b96a7bc2c19795a1e5ba4e4 100644 --- a/.gitlab/production-values.yaml +++ b/.gitlab/production-values.yaml @@ -6,8 +6,12 @@ hpa: maxReplicas: 25 podDisruptionBudget: enabled: true - minAvailable: 5 + minAvailable: 4 maxUnavailable: +podAnnotations: + prometheus.io/scrape: "true" + prometheus.io/path: /metrics + prometheus.io/port: "80" ingress: annotations: certmanager.k8s.io/cluster-issuer: letsencrypt-prod diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 21c9784cbd9a1dcbcef500101649a878978ba76f..ddf8c24cb904c239ca3ae53450ef4767d8f0e0b6 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -44,6 +44,11 @@ class Handler extends ExceptionHandler */ public function render($request, Exception $exception) { + if ($request->is('*/meta/meta.ger3*')) { + $registry = \Prometheus\CollectorRegistry::getDefault(); + $histogram = $registry->getOrRegisterHistogram('metager', 'result_histogram', 'counts total number of returned results', [], [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]); + $histogram->observe(0); + } return parent::render($request, $exception); } diff --git a/app/Http/Controllers/MetaGerSearch.php b/app/Http/Controllers/MetaGerSearch.php index 4f0bcbdac6387a1d90a32e2109f77d040d0c7d83..5c7a9a8d354a6346169e969cb35c00e565544a52 100644 --- a/app/Http/Controllers/MetaGerSearch.php +++ b/app/Http/Controllers/MetaGerSearch.php @@ -122,6 +122,10 @@ class MetaGerSearch extends Controller dd($timings); } + $registry = \Prometheus\CollectorRegistry::getDefault(); + $counter = $registry->getOrRegisterCounter('metager', 'result_counter', 'counts total number of returned results', []); + $counter->incBy(sizeof($metager->getResults())); + return $resultpage; } @@ -183,6 +187,7 @@ class MetaGerSearch extends Controller ]; $result["nextSearchLink"] = $metager->nextSearchLink(); + $newResults = 0; foreach ($metager->getResults() as $index => $resultTmp) { if ($resultTmp->new) { if ($metager->getFokus() !== "bilder") { @@ -196,6 +201,7 @@ class MetaGerSearch extends Controller $result['newResults'][$index] = $html; $result["imagesearch"] = true; } + $newResults++; } } @@ -211,6 +217,11 @@ class MetaGerSearch extends Controller $result["finished"] = $finished; + if($newResults > 0){ + $registry = \Prometheus\CollectorRegistry::getDefault(); + $counter = $registry->getOrRegisterCounter('metager', 'result_counter', 'counts total number of returned results', []); + $counter->incBy($newResults); + } // Update new Engines Cache::put("loader_" . $metager->getSearchUid(), $metager->getEngines(), 1 * 60); return response()->json($result); diff --git a/chart/values.yaml b/chart/values.yaml index f4508a0baf071005b5a9876c66f9a17feca716bc..0641dce2ad6efb74a0e22bf123e485308987a060 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -50,13 +50,13 @@ prometheus: metrics: false livenessProbe: path: "/" - initialDelaySeconds: 40 + initialDelaySeconds: 20 timeoutSeconds: 15 scheme: "HTTP" probeType: "httpGet" readinessProbe: path: "/" - initialDelaySeconds: 30 + initialDelaySeconds: 15 timeoutSeconds: 15 scheme: "HTTP" probeType: "httpGet" diff --git a/composer.json b/composer.json index 2f226d4725f83c9a6b08fd8488c71ef51ece476e..7abc86a96724ca0c7eeb71156d8e842812415ac9 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,8 @@ "mews/captcha": "^2.2", "monospice/laravel-redis-sentinel-drivers": "^2.6", "predis/predis": "^1.1", - "symfony/dom-crawler": "^4.1" + "symfony/dom-crawler": "^4.1", + "endclothing/prometheus_client_php": "^1.0" }, "require-dev": { "beyondcode/laravel-dump-server": "^1.0", diff --git a/routes/web.php b/routes/web.php index 16b658253b881a5d38385eea7c4137c440d95e78..edc101c0a2262718362e14fef93bef9a56cd150b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ <?php use Jenssegers\Agent\Agent; +use Prometheus\RenderTextFormat; /* |-------------------------------------------------------------------------- @@ -234,4 +235,14 @@ Route::group( ->header('Content-Type', 'text/plain'); }); }); + + Route::get('metrics', function() { + $registry = \Prometheus\CollectorRegistry::getDefault(); + + $renderer = new RenderTextFormat(); + $result = $renderer->render($registry->getMetricFamilySamples()); + + return response($result, 200) + ->header('Content-Type', RenderTextFormat::MIME_TYPE); + }); });