From e682e8855938e2b3a46aa728603f6d61a0084cd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabr=C3=ADcia=20Diniz?= <104025448+FabriciaDinizRH@users.noreply.github.com> Date: Tue, 13 Feb 2024 16:36:44 +0000 Subject: [PATCH] feat(RHINENG-5449): add new prometheus metrics (#1613) * feat(RHINENG-5449): add new prometheus metrics * fix utf8 typos * Fix typo --------- Co-authored-by: Asa Price --- app/queue/event_producer.py | 4 ++++ app/queue/metrics.py | 5 +++++ app/queue/queue.py | 1 + 3 files changed, 10 insertions(+) diff --git a/app/queue/event_producer.py b/app/queue/event_producer.py index 41605c9ec..d8833f1b5 100644 --- a/app/queue/event_producer.py +++ b/app/queue/event_producer.py @@ -5,6 +5,8 @@ from app.instrumentation import message_not_produced from app.instrumentation import message_produced from app.logging import get_logger +from app.queue.metrics import produce_large_message_failure +from app.queue.metrics import produced_message_size logger = get_logger(__name__) @@ -27,8 +29,10 @@ def on_delivered(self, error, message): if error: if error.code() == KafkaError.MSG_SIZE_TOO_LARGE: message_to_send = message + produce_large_message_failure.inc() message_not_produced(logger, error, self.topic, self.event, self.key, self.headers, message_to_send) else: + produced_message_size.observe(len(str(message).encode("utf-8"))) message_produced(logger, message, self.headers) diff --git a/app/queue/metrics.py b/app/queue/metrics.py index 341ff515f..3ba5dac6a 100644 --- a/app/queue/metrics.py +++ b/app/queue/metrics.py @@ -32,6 +32,11 @@ ingress_message_handler_time = Summary( "inventory_ingress_message_handler_seconds", "Total time spent handling messages from the ingress queue" ) +consumed_message_size = Summary("inventory_consumed_message_size", "Size of incoming messages in bytes") +produced_message_size = Summary("inventory_produced_message_size", "Size of outgoing messages in bytes") +produce_large_message_failure = Counter( + "inventory_produce_large_message_failures", "Total amount of failures producing messages due to their size" +) version = Info("inventory_mq_service_version", "Build version for the inventory message queue service") version.info({"version": get_build_version()}) event_producer_success = Counter( diff --git a/app/queue/queue.py b/app/queue/queue.py index 1ffffe84f..65c590760 100644 --- a/app/queue/queue.py +++ b/app/queue/queue.py @@ -344,6 +344,7 @@ def event_loop(consumer, flask_app, event_producer, notification_event_producer, try: handler(msg.value(), event_producer, notification_event_producer=notification_event_producer) + metrics.consumed_message_size.observe(len(str(msg).encode("utf-8"))) metrics.ingress_message_handler_success.inc() except OperationalError as oe: """sqlalchemy.exc.OperationalError: This error occurs when an