diff --git a/packages/twenty-server/src/engine/core-modules/captcha/captcha.guard.ts b/packages/twenty-server/src/engine/core-modules/captcha/captcha.guard.ts index 6199515ab..93e1c145e 100644 --- a/packages/twenty-server/src/engine/core-modules/captcha/captcha.guard.ts +++ b/packages/twenty-server/src/engine/core-modules/captcha/captcha.guard.ts @@ -30,6 +30,7 @@ export class CaptchaGuard implements CanActivate { await this.metricsService.incrementCounter({ key: MetricsKeys.InvalidCaptcha, eventId: token || '', + ...(result.error ? { attributes: { error: result.error } } : {}), }); throw new BadRequestException( diff --git a/packages/twenty-server/src/engine/core-modules/captcha/drivers/google-recaptcha.driver.ts b/packages/twenty-server/src/engine/core-modules/captcha/drivers/google-recaptcha.driver.ts index 008d8705b..9608e37ba 100644 --- a/packages/twenty-server/src/engine/core-modules/captcha/drivers/google-recaptcha.driver.ts +++ b/packages/twenty-server/src/engine/core-modules/captcha/drivers/google-recaptcha.driver.ts @@ -32,7 +32,7 @@ export class GoogleRecaptchaDriver implements CaptchaDriver { return { success: responseData.success, ...(!responseData.success && { - error: responseData['error-codes']?.[0] ?? 'Captcha Error', + error: responseData['error-codes']?.[0] ?? 'unknown-error', }), }; } diff --git a/packages/twenty-server/src/engine/core-modules/captcha/drivers/turnstile.driver.ts b/packages/twenty-server/src/engine/core-modules/captcha/drivers/turnstile.driver.ts index ff21d8f62..608099ff6 100644 --- a/packages/twenty-server/src/engine/core-modules/captcha/drivers/turnstile.driver.ts +++ b/packages/twenty-server/src/engine/core-modules/captcha/drivers/turnstile.driver.ts @@ -32,7 +32,7 @@ export class TurnstileDriver implements CaptchaDriver { return { success: responseData.success, ...(!responseData.success && { - error: responseData['error-codes']?.[0] ?? 'Captcha Error', + error: responseData['error-codes']?.[0] ?? 'unknown-error', }), }; } diff --git a/packages/twenty-server/src/engine/core-modules/metrics/metrics.service.ts b/packages/twenty-server/src/engine/core-modules/metrics/metrics.service.ts index eda81959a..fcbf232cb 100644 --- a/packages/twenty-server/src/engine/core-modules/metrics/metrics.service.ts +++ b/packages/twenty-server/src/engine/core-modules/metrics/metrics.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { metrics } from '@opentelemetry/api'; +import { metrics, Attributes } from '@opentelemetry/api'; import { MetricsCacheService } from 'src/engine/core-modules/metrics/metrics-cache.service'; import { MetricsKeys } from 'src/engine/core-modules/metrics/types/metrics-keys.type'; @@ -12,17 +12,19 @@ export class MetricsService { async incrementCounter({ key, eventId, + attributes, shouldStoreInCache = true, }: { key: MetricsKeys; eventId?: string; + attributes?: Attributes; shouldStoreInCache?: boolean; }) { //TODO : Define meter name usage in monitoring const meter = metrics.getMeter('twenty-server'); const counter = meter.createCounter(key); - counter.add(1); + counter.add(1, attributes); if (shouldStoreInCache && eventId) { this.metricsCacheService.updateCounter(key, [eventId]); @@ -32,17 +34,19 @@ export class MetricsService { async batchIncrementCounter({ key, eventIds, + attributes, shouldStoreInCache = true, }: { key: MetricsKeys; eventIds: string[]; + attributes?: Attributes; shouldStoreInCache?: boolean; }) { //TODO : Define meter name usage in monitoring const meter = metrics.getMeter('twenty-server'); const counter = meter.createCounter(key); - counter.add(eventIds.length); + counter.add(eventIds.length, attributes); if (shouldStoreInCache) { this.metricsCacheService.updateCounter(key, eventIds);