From fc3533bd57676b1ce26442a5af2b60be80aef610 Mon Sep 17 00:00:00 2001 From: Diogo Munaro Vieira Date: Mon, 8 Jun 2020 21:25:16 -0300 Subject: [PATCH] Adding only if --- .../hooks/metrics/prometheus/__init__.py | 19 ++++++++++--------- tests_integration/test_barterdude.py | 9 +++------ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/barterdude/hooks/metrics/prometheus/__init__.py b/barterdude/hooks/metrics/prometheus/__init__.py index b3c6196..05bcaaa 100644 --- a/barterdude/hooks/metrics/prometheus/__init__.py +++ b/barterdude/hooks/metrics/prometheus/__init__.py @@ -6,7 +6,6 @@ from barterdude.hooks import HttpHook from barterdude.hooks.metrics.prometheus.definitions import Definitions from barterdude.hooks.metrics.prometheus.metrics import Metrics -from barterdude.conf import BARTERDUDE_DEFAULT_APP_NAME try: from prometheus_client import ( CollectorRegistry, @@ -25,12 +24,12 @@ class Prometheus(HttpHook): def __init__( self, barterdude: BarterDude, - labels: Optional[dict] = None, + labels: dict = {}, path: str = "/metrics", registry: CollectorRegistry = None ): self.__registry = registry or CollectorRegistry() - self.__labels = labels or {"application": BARTERDUDE_DEFAULT_APP_NAME} + self.__labels = labels self.__metrics = Metrics(self.__registry) self.__definitions = Definitions( self.__registry, self.__metrics, list(self.__labels.keys()) @@ -45,10 +44,11 @@ def metrics(self): async def before_consume(self, message: RabbitMQMessage): hash_message = id(message) - self.metrics[self.__definitions.BEFORE_CONSUME].labels( - **self.__labels - ).inc() self._msg_start[hash_message] = time.time() + metric = self.metrics[self.__definitions.BEFORE_CONSUME] + if self.__labels: + metric = metric.labels(**self.__labels) + metric.inc() async def _on_complete(self, message: RabbitMQMessage, @@ -72,9 +72,10 @@ async def on_fail(self, message: RabbitMQMessage, error: Exception): await self._on_complete(message, self.__definitions.FAIL, error) async def on_connection_fail(self, error: Exception, retries: int): - self.metrics[self.__definitions.CONNECTION_FAIL].labels( - **self.__labels - ).inc() + metric = self.metrics[self.__definitions.CONNECTION_FAIL] + if self.__labels: + metric = metric.labels(**self.__labels) + metric.inc() async def __call__(self, req: web.Request): return web.Response( diff --git a/tests_integration/test_barterdude.py b/tests_integration/test_barterdude.py index 187e4ef..2627c59 100644 --- a/tests_integration/test_barterdude.py +++ b/tests_integration/test_barterdude.py @@ -8,7 +8,6 @@ from barterdude.hooks.healthcheck import Healthcheck from barterdude.hooks import logging as hook_logging from barterdude.hooks.metrics.prometheus import Prometheus -from barterdude.conf import BARTERDUDE_DEFAULT_APP_NAME from tests_unit.helpers import load_fixture from tests_integration.helpers import ErrorHook from asyncworker.connections import AMQPConnection @@ -183,18 +182,16 @@ async def handler(message): text = await response.text() self.assertEqual(status_code, 200) - name = BARTERDUDE_DEFAULT_APP_NAME self.assertNotEqual(-1, text.find( - 'barterdude_received_number_before_consume_messages_total' - '{application="%s"} 1.0' % name + 'barterdude_received_number_before_consume_messages_total 1.0' )) self.assertNotEqual(-1, text.find( 'barterdude_processing_message_seconds_bucket' - '{application="%s",error="",le="0.025",state="success"} 1.0' % name + '{error="",le="0.025",state="success"} 1.0' )) self.assertNotEqual(-1, text.find( 'barterdude_processing_message_seconds_count' - '{application="%s",error="",state="success"} 1.0' % name + '{error="",state="success"} 1.0' )) async def test_register_multiple_prometheus_hooks(self):