diff --git a/mautrix_telegram/abstract_user.py b/mautrix_telegram/abstract_user.py index 5094769c..3b789a16 100644 --- a/mautrix_telegram/abstract_user.py +++ b/mautrix_telegram/abstract_user.py @@ -52,13 +52,16 @@ UpdateMessage = Union[UpdateShortChatMessage, UpdateShortMessage, UpdateNewChann UpdateMessageContent = Union[UpdateShortMessage, UpdateShortChatMessage, Message, MessageService] try: - from prometheus_client import Histogram + from prometheus_client import Histogram, Counter + UPDATE_COUNT = Counter("telegram_update_count", "Number of Telegram updates processed", + ["update_type"]) UPDATE_TIME = Histogram("telegram_update", "Time spent processing Telegram updates", ["update_type"]) except ImportError: Histogram = None UPDATE_TIME = None + UPDATE_COUNT = None class AbstractUser(ABC): session_container = None # type: AlchemySessionContainer @@ -166,8 +169,10 @@ class AbstractUser(ABC): await self._update(update) except Exception: self.log.exception("Failed to handle Telegram update") - if UPDATE_TIME: - UPDATE_TIME.labels(update_type=type(update).__name__).observe(time.time() - start_time) + if UPDATE_TIME and UPDATE_COUNT: + update_type = type(update).__name__ + UPDATE_TIME.labels(update_type=update_type).observe(time.time() - start_time) + UPDATE_COUNT.labels(update_type=update_type).inc() async def get_dialogs(self, limit: int = None) -> List[Union[Chat, Channel]]: if self.is_bot: diff --git a/mautrix_telegram/matrix.py b/mautrix_telegram/matrix.py index f073a247..e1255f10 100644 --- a/mautrix_telegram/matrix.py +++ b/mautrix_telegram/matrix.py @@ -29,13 +29,17 @@ if TYPE_CHECKING: from .context import Context try: - from prometheus_client import Histogram + from prometheus_client import Histogram, Counter + EVENT_COUNT = Counter("matrix_event_count", "Number of Matrix events processed", + ["event_type"]) EVENT_TIME = Histogram("matrix_event", "Time spent processing Matrix events", ["event_type"]) except ImportError: Histogram = None EVENT_TIME = None + EVENT_COUNT = None + class MatrixHandler: log = logging.getLogger("mau.mx") # type: logging.Logger @@ -442,5 +446,6 @@ class MatrixHandler: await self.handle_typing(room_id, content.get("user_ids", [])) else: return - if EVENT_TIME: + if EVENT_TIME and EVENT_COUNT: EVENT_TIME.labels(event_type=evt_type).observe(time.time() - start_time) + EVENT_COUNT.labels(event_type=evt_type).inc()