Observability - add new counters (#15292)
closes https://github.com/twentyhq/core-team-issues/issues/1741
This commit is contained in:
@@ -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 {}
|
||||
|
||||
+8
@@ -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(
|
||||
|
||||
+2
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user