mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
* add metrics to cache * use events for metrics * pr comments / broken test * lint fix * update the test * improve tests * Update packages/cli/src/config/schema.ts * disable flaky test * lint fix --------- Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in> Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <netroy@users.noreply.github.com>
53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import { EventMessageTypeNames } from 'n8n-workflow';
|
|
import config from '@/config';
|
|
import type { EventMessageTypes } from '../EventMessageClasses';
|
|
|
|
export const METRICS_EVENT_NAME = 'metrics.messageEventBus.Event';
|
|
|
|
export function getMetricNameForEvent(event: EventMessageTypes): string {
|
|
const prefix = config.getEnv('endpoints.metrics.prefix');
|
|
return prefix + event.eventName.replace('n8n.', '').replace(/\./g, '_') + '_total';
|
|
}
|
|
|
|
export function getLabelValueForNode(nodeType: string): string {
|
|
return nodeType.replace('n8n-nodes-', '').replace(/\./g, '_');
|
|
}
|
|
|
|
export function getLabelValueForCredential(credentialType: string): string {
|
|
return credentialType.replace(/\./g, '_');
|
|
}
|
|
|
|
export function getLabelsForEvent(event: EventMessageTypes): Record<string, string> {
|
|
switch (event.__type) {
|
|
case EventMessageTypeNames.audit:
|
|
if (event.eventName.startsWith('n8n.audit.user.credentials')) {
|
|
return config.getEnv('endpoints.metrics.includeCredentialTypeLabel')
|
|
? {
|
|
credential_type: getLabelValueForCredential(
|
|
event.payload.credentialType ?? 'unknown',
|
|
),
|
|
}
|
|
: {};
|
|
}
|
|
|
|
if (event.eventName.startsWith('n8n.audit.workflow')) {
|
|
return config.getEnv('endpoints.metrics.includeWorkflowIdLabel')
|
|
? { workflow_id: event.payload.workflowId?.toString() ?? 'unknown' }
|
|
: {};
|
|
}
|
|
break;
|
|
|
|
case EventMessageTypeNames.node:
|
|
return config.getEnv('endpoints.metrics.includeNodeTypeLabel')
|
|
? { node_type: getLabelValueForNode(event.payload.nodeType ?? 'unknown') }
|
|
: {};
|
|
|
|
case EventMessageTypeNames.workflow:
|
|
return config.getEnv('endpoints.metrics.includeWorkflowIdLabel')
|
|
? { workflow_id: event.payload.workflowId?.toString() ?? 'unknown' }
|
|
: {};
|
|
}
|
|
|
|
return {};
|
|
}
|