Observability - add new counters (#15292)

closes https://github.com/twentyhq/core-team-issues/issues/1741
This commit is contained in:
Etienne
2025-10-23 16:33:45 +02:00
committed by GitHub
parent 0780380fe5
commit e23f2c9183
5 changed files with 23 additions and 2 deletions
@@ -26,4 +26,6 @@ export enum MetricsKeys {
AIToolExecutionSucceeded = 'ai-tool-execution/succeeded',
SchemaVersionMismatch = 'schema-version/mismatch',
AppVersionMismatch = 'app-version/mismatch',
CronJobDeletedWorkspace = 'cron-job/deleted-workspace',
JobWebhookCallCompleted = 'job/webhook-call-completed',
}
@@ -9,6 +9,8 @@ import { WEBHOOK_RESPONSE_EVENT } from 'src/engine/core-modules/audit/utils/even
import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { MetricsService } from 'src/engine/core-modules/metrics/metrics.service';
import { MetricsKeys } from 'src/engine/core-modules/metrics/types/metrics-keys.type';
export type CallWebhookJobData = {
targetUrl: string;
@@ -28,6 +30,7 @@ export class CallWebhookJob {
constructor(
private readonly httpService: HttpService,
private readonly auditService: AuditService,
private readonly metricsService: MetricsService,
) {}
private generateSignature(
@@ -95,6 +98,11 @@ export class CallWebhookJob {
success,
...commonPayload,
});
this.metricsService.incrementCounter({
key: MetricsKeys.JobWebhookCallCompleted,
shouldStoreInCache: false,
});
} catch (err) {
auditService.insertWorkspaceEvent(WEBHOOK_RESPONSE_EVENT, {
success: false,
@@ -2,12 +2,13 @@ import { HttpModule } from '@nestjs/axios';
import { Module } from '@nestjs/common';
import { AuditModule } from 'src/engine/core-modules/audit/audit.module';
import { WebhookModule } from 'src/engine/core-modules/webhook/webhook.module';
import { MetricsModule } from 'src/engine/core-modules/metrics/metrics.module';
import { CallWebhookJobsJob } from 'src/engine/core-modules/webhook/jobs/call-webhook-jobs.job';
import { CallWebhookJob } from 'src/engine/core-modules/webhook/jobs/call-webhook.job';
import { WebhookModule } from 'src/engine/core-modules/webhook/webhook.module';
@Module({
imports: [HttpModule, AuditModule, WebhookModule],
imports: [HttpModule, AuditModule, WebhookModule, MetricsModule],
providers: [CallWebhookJobsJob, CallWebhookJob],
})
export class WebhookJobModule {}
@@ -16,6 +16,8 @@ import { BillingSubscriptionEntity } from 'src/engine/core-modules/billing/entit
import { SubscriptionStatus } from 'src/engine/core-modules/billing/enums/billing-subscription-status.enum';
import { EmailService } from 'src/engine/core-modules/email/email.service';
import { I18nService } from 'src/engine/core-modules/i18n/i18n.service';
import { MetricsService } from 'src/engine/core-modules/metrics/metrics.service';
import { MetricsKeys } from 'src/engine/core-modules/metrics/types/metrics-keys.type';
import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service';
import { UserWorkspaceEntity } from 'src/engine/core-modules/user-workspace/user-workspace.entity';
import { UserService } from 'src/engine/core-modules/user/services/user.service';
@@ -51,6 +53,7 @@ export class CleanerWorkspaceService {
@InjectRepository(UserWorkspaceEntity)
private readonly userWorkspaceRepository: Repository<UserWorkspaceEntity>,
private readonly i18nService: I18nService,
private readonly metricsService: MetricsService,
) {
this.inactiveDaysBeforeSoftDelete = this.twentyConfigService.get(
'WORKSPACE_INACTIVE_DAYS_BEFORE_SOFT_DELETION',
@@ -447,6 +450,11 @@ export class CleanerWorkspaceService {
if (!dryRun) {
await this.workspaceService.deleteWorkspace(workspace.id);
this.metricsService.incrementCounter({
key: MetricsKeys.CronJobDeletedWorkspace,
shouldStoreInCache: false,
});
}
this.logger.log(
@@ -4,6 +4,7 @@ import { TypeOrmModule } from '@nestjs/typeorm';
import { BillingModule } from 'src/engine/core-modules/billing/billing.module';
import { BillingSubscriptionEntity } from 'src/engine/core-modules/billing/entities/billing-subscription.entity';
import { EmailModule } from 'src/engine/core-modules/email/email.module';
import { MetricsModule } from 'src/engine/core-modules/metrics/metrics.module';
import { UserWorkspaceEntity } from 'src/engine/core-modules/user-workspace/user-workspace.entity';
import { UserVarsModule } from 'src/engine/core-modules/user/user-vars/user-vars.module';
import { UserModule } from 'src/engine/core-modules/user/user.module';
@@ -31,6 +32,7 @@ import { CleanerWorkspaceService } from 'src/engine/workspace-manager/workspace-
UserModule,
EmailModule,
BillingModule,
MetricsModule,
],
providers: [
DeleteWorkspacesCommand,