n8n
Version:
n8n Workflow Automation Tool
102 lines • 6.68 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrometheusMetricsService = void 0;
const backend_common_1 = require("@n8n/backend-common");
const di_1 = require("@n8n/di");
const prom_client_1 = __importDefault(require("prom-client"));
const active_workflow_metrics_service_1 = require("./active-workflow-metrics.service");
const cache_metrics_service_1 = require("./cache-metrics.service");
const db_pool_metrics_service_1 = require("./db-pool-metrics.service");
const default_metrics_service_1 = require("./default-metrics.service");
const dns_cache_metrics_service_1 = require("./dns-cache-metrics.service");
const event_bus_metrics_service_1 = require("./event-bus-metrics.service");
const execution_data_metrics_service_1 = require("./execution-data-metrics.service");
const instance_ai_metrics_service_1 = require("./instance-ai-metrics.service");
const instance_role_metrics_service_1 = require("./instance-role-metrics.service");
const pss_metrics_service_1 = require("./pss-metrics.service");
const queue_metrics_service_1 = require("./queue-metrics.service");
const route_metrics_service_1 = require("./route-metrics.service");
const scheduler_metrics_service_1 = require("./scheduler-metrics.service");
const ssrf_metrics_service_1 = require("./ssrf-metrics.service");
const token_exchange_metrics_service_1 = require("./token-exchange-metrics.service");
const version_metrics_service_1 = require("./version-metrics.service");
const webhook_and_form_metrics_service_1 = require("./webhook-and-form-metrics.service");
const workflow_execution_duration_metrics_service_1 = require("./workflow-execution-duration-metrics.service");
const workflow_info_metrics_service_1 = require("./workflow-info-metrics.service");
const workflow_publication_metrics_service_1 = require("./workflow-publication-metrics.service");
const workflow_statistics_metrics_service_1 = require("./workflow-statistics-metrics.service");
let PrometheusMetricsService = class PrometheusMetricsService {
constructor(logger, cache, eventBus, queue, route, roleInstance, activeWorkflow, workflowExecutionDuration, workflowStatistics, executionData, pss, version, defaultMetrics, tokenExchange, ssrf, dnsCache, webhook, workflowInfo, instanceAi, dbPool, workflowPublication, scheduler) {
this.initialized = false;
this.logger = logger.scoped('metrics');
this.collectors = [
cache,
eventBus,
queue,
route,
roleInstance,
activeWorkflow,
workflowExecutionDuration,
workflowStatistics,
executionData,
pss,
version,
defaultMetrics,
tokenExchange,
ssrf,
dnsCache,
webhook,
workflowInfo,
instanceAi,
dbPool,
workflowPublication,
scheduler,
];
}
init(app) {
if (!this.initialized) {
this.initialized = true;
this.logger.debug('Initialization of prometheus metrics...');
this.initCollectors(app);
this.mountMetricsEndpoint(app);
this.logger.debug('Initialization of prometheus metrics: done.');
}
else {
this.logger.warn('The prometheus initialization should not be called twice.');
}
}
initCollectors(app) {
this.collectors
.filter((collector) => collector.enabled)
.forEach((collector) => {
this.logger.debug(`Initialization of prometheus metrics: init '${collector.constructor.name}'.`);
collector.init(app);
});
}
mountMetricsEndpoint(app) {
this.logger.debug("Initialization of prometheus metrics: register endpoint 'metrics/'");
app.get('/metrics', async (_req, res) => {
const metrics = await prom_client_1.default.register.metrics();
res.setHeader('Content-Type', prom_client_1.default.register.contentType);
res.send(metrics).end();
});
}
};
exports.PrometheusMetricsService = PrometheusMetricsService;
exports.PrometheusMetricsService = PrometheusMetricsService = __decorate([
(0, di_1.Service)(),
__metadata("design:paramtypes", [backend_common_1.Logger, cache_metrics_service_1.PrometheusCacheMetricsService, event_bus_metrics_service_1.PrometheusEventBusMetricsService, queue_metrics_service_1.PrometheusQueueMetricsService, route_metrics_service_1.PrometheusRouteMetricsService, instance_role_metrics_service_1.PrometheusInstanceRoleMetricsService, active_workflow_metrics_service_1.PrometheusActiveWorkflowMetricsService, workflow_execution_duration_metrics_service_1.PrometheusWorkflowExecutionDurationMetricsService, workflow_statistics_metrics_service_1.PrometheusWorkflowStatisticsMetricsService, execution_data_metrics_service_1.PrometheusExecutionDataMetricsService, pss_metrics_service_1.PrometheusPssMetricsService, version_metrics_service_1.PrometheusVersionMetricsService, default_metrics_service_1.PrometheusDefaultMetricsService, token_exchange_metrics_service_1.PrometheusTokenExchangeMetricsService, ssrf_metrics_service_1.PrometheusSsrfMetricsService, dns_cache_metrics_service_1.PrometheusDnsCacheMetricsService, webhook_and_form_metrics_service_1.PrometheusWebhookAndFormMetricsService, workflow_info_metrics_service_1.PrometheusWorkflowInfoMetricsService, instance_ai_metrics_service_1.PrometheusInstanceAiMetricsService, db_pool_metrics_service_1.PrometheusDbPoolMetricsService, workflow_publication_metrics_service_1.PrometheusWorkflowPublicationMetricsService, scheduler_metrics_service_1.PrometheusSchedulerMetricsService])
], PrometheusMetricsService);
//# sourceMappingURL=prometheus.service.js.map