From b15294d80cb5715149abf00ab7d8d0602e5c70cb Mon Sep 17 00:00:00 2001 From: forehalo Date: Tue, 16 Jul 2024 03:22:47 +0000 Subject: [PATCH] chore(server): add mail metrics (#7514) --- .../src/fundamentals/mailer/mail.service.ts | 19 +++++++++++++++---- .../src/fundamentals/metrics/metrics.ts | 3 ++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/backend/server/src/fundamentals/mailer/mail.service.ts b/packages/backend/server/src/fundamentals/mailer/mail.service.ts index dff7d0789..f3e4168ac 100644 --- a/packages/backend/server/src/fundamentals/mailer/mail.service.ts +++ b/packages/backend/server/src/fundamentals/mailer/mail.service.ts @@ -3,6 +3,7 @@ import { Inject, Injectable, Optional } from '@nestjs/common'; import { Config } from '../config'; import { MailerServiceIsNotConfigured } from '../error'; import { URLHelper } from '../helpers'; +import { metrics } from '../metrics'; import type { MailerService, Options } from './mailer'; import { MAILER_SERVICE } from './mailer'; import { emailTemplate } from './template'; @@ -19,10 +20,20 @@ export class MailService { throw new MailerServiceIsNotConfigured(); } - return this.mailer.sendMail({ - from: this.config.mailer?.from, - ...options, - }); + metrics.mail.counter('total').add(1); + try { + const result = await this.mailer.sendMail({ + from: this.config.mailer?.from, + ...options, + }); + + metrics.mail.counter('sent').add(1); + + return result; + } catch (e) { + metrics.mail.counter('error').add(1); + throw e; + } } hasConfigured() { diff --git a/packages/backend/server/src/fundamentals/metrics/metrics.ts b/packages/backend/server/src/fundamentals/metrics/metrics.ts index a0ee8687a..cbf64228f 100644 --- a/packages/backend/server/src/fundamentals/metrics/metrics.ts +++ b/packages/backend/server/src/fundamentals/metrics/metrics.ts @@ -35,7 +35,8 @@ export type KnownMetricScopes = | 'auth' | 'controllers' | 'doc' - | 'sse'; + | 'sse' + | 'mail'; const metricCreators: MetricCreators = { counter(meter: Meter, name: string, opts?: MetricOptions) {