diff --git a/changelog.d/16881.feature b/changelog.d/16881.feature new file mode 100644 index 0000000000..d1c8cc304e --- /dev/null +++ b/changelog.d/16881.feature @@ -0,0 +1 @@ +A metric was added for emails sent by Synapse, broken down by type: `synapse_emails_sent_total`. Contributed by Remi Rampin. diff --git a/synapse/push/mailer.py b/synapse/push/mailer.py index 60161e86f2..b4bd88f308 100644 --- a/synapse/push/mailer.py +++ b/synapse/push/mailer.py @@ -26,6 +26,7 @@ from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, TypeVar import bleach import jinja2 from markupsafe import Markup +from prometheus_client import Counter from synapse.api.constants import EventTypes, Membership, RoomTypes from synapse.api.errors import StoreError @@ -56,6 +57,12 @@ logger = logging.getLogger(__name__) T = TypeVar("T") +emails_sent_counter = Counter( + "synapse_emails_sent_total", + "Emails sent by type", + ["type"], +) + CONTEXT_BEFORE = 1 CONTEXT_AFTER = 1 @@ -130,6 +137,8 @@ class Mailer: logger.info("Created Mailer for app_name %s" % app_name) + emails_sent_counter.labels("password_reset") + async def send_password_reset_mail( self, email_address: str, token: str, client_secret: str, sid: str ) -> None: @@ -153,6 +162,8 @@ class Mailer: template_vars: TemplateVars = {"link": link} + emails_sent_counter.labels("password_reset").inc() + await self.send_email( email_address, self.email_subjects.password_reset @@ -160,6 +171,8 @@ class Mailer: template_vars, ) + emails_sent_counter.labels("registration") + async def send_registration_mail( self, email_address: str, token: str, client_secret: str, sid: str ) -> None: @@ -183,6 +196,8 @@ class Mailer: template_vars: TemplateVars = {"link": link} + emails_sent_counter.labels("registration").inc() + await self.send_email( email_address, self.email_subjects.email_validation @@ -190,6 +205,8 @@ class Mailer: template_vars, ) + emails_sent_counter.labels("add_threepid") + async def send_add_threepid_mail( self, email_address: str, token: str, client_secret: str, sid: str ) -> None: @@ -214,6 +231,8 @@ class Mailer: template_vars: TemplateVars = {"link": link} + emails_sent_counter.labels("add_threepid").inc() + await self.send_email( email_address, self.email_subjects.email_validation @@ -221,6 +240,8 @@ class Mailer: template_vars, ) + emails_sent_counter.labels("notification") + async def send_notification_mail( self, app_id: str, @@ -315,6 +336,8 @@ class Mailer: "reason": reason, } + emails_sent_counter.labels("notification").inc() + await self.send_email( email_address, summary_text, template_vars, unsubscribe_link )