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
)
|