summary refs log tree commit diff
path: root/synapse/push/mailer.py
diff options
context:
space:
mode:
authorRemi Rampin <remi@rampin.org>2024-02-14 10:30:03 -0500
committerGitHub <noreply@github.com>2024-02-14 15:30:03 +0000
commit0621e8eb0eaf20c88b2ebfc07d3a643340093839 (patch)
tree5d704641823db4ec412957d659d0dc5e3f0e2cf5 /synapse/push/mailer.py
parentMerge branch 'master' into develop (diff)
downloadsynapse-0621e8eb0eaf20c88b2ebfc07d3a643340093839.tar.xz
Add metric for emails sent (#16881)
This adds a counter `synapse_emails_sent_total` for emails sent. They
are broken down by `type`, which are `password_reset`, `registration`,
`add_threepid`, `notification` (matching the methods of `Mailer`).
Diffstat (limited to '')
-rw-r--r--synapse/push/mailer.py23
1 files changed, 23 insertions, 0 deletions
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
         )