diff --git a/packages/twenty-server/src/engine/core-modules/message-queue/drivers/bullmq.driver.ts b/packages/twenty-server/src/engine/core-modules/message-queue/drivers/bullmq.driver.ts index abfb79b2b4..13b6e4782f 100644 --- a/packages/twenty-server/src/engine/core-modules/message-queue/drivers/bullmq.driver.ts +++ b/packages/twenty-server/src/engine/core-modules/message-queue/drivers/bullmq.driver.ts @@ -114,6 +114,15 @@ export class BullMQDriver Sentry.withIsolationScope(async () => { applyWorkspaceSentryContextFromJobData(job.data); + const queueLatency = Math.max(0, Date.now() - job.timestamp); + + this.metricsService.recordHistogram({ + key: MetricsKeys.JobLatencyMs, + value: queueLatency, + unit: 'ms', + attributes: { queue: queueName, job_name: job.name }, + }); + // TODO: Correctly support for job.id const timeStart = performance.now(); const workspaceId = job.data?.workspaceId; diff --git a/packages/twenty-server/src/engine/core-modules/metrics/types/metrics-keys.type.ts b/packages/twenty-server/src/engine/core-modules/metrics/types/metrics-keys.type.ts index a34d9e714c..3435d0c41d 100644 --- a/packages/twenty-server/src/engine/core-modules/metrics/types/metrics-keys.type.ts +++ b/packages/twenty-server/src/engine/core-modules/metrics/types/metrics-keys.type.ts @@ -40,6 +40,7 @@ export enum MetricsKeys { JobCompleted = 'job/completed', JobFailed = 'job/failed', JobWaiting = 'job/waiting', + JobLatencyMs = 'job/latency-ms', AiChatTurnLatencyMs = 'ai-chat/turn-latency-ms', AiChatStepLatencyMs = 'ai-chat/step-latency-ms', AiChatTtftMs = 'ai-chat/ttft-ms',