37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
const client = require('prom-client');
|
|
|
|
// Create a Registry
|
|
const register = new client.Registry();
|
|
|
|
// Add default metrics (CPU, memory, etc.)
|
|
client.collectDefaultMetrics({ register });
|
|
|
|
// Custom metrics
|
|
const httpRequestDuration = new client.Histogram({
|
|
name: 'http_request_duration_seconds',
|
|
help: 'Duration of HTTP requests in seconds',
|
|
labelNames: ['method', 'route', 'status_code'],
|
|
buckets: [0.01, 0.05, 0.1, 0.5, 1, 2, 5],
|
|
});
|
|
register.registerMetric(httpRequestDuration);
|
|
|
|
const httpRequestTotal = new client.Counter({
|
|
name: 'http_requests_total',
|
|
help: 'Total number of HTTP requests',
|
|
labelNames: ['method', 'route', 'status_code'],
|
|
});
|
|
register.registerMetric(httpRequestTotal);
|
|
|
|
const activeLoads = new client.Gauge({
|
|
name: 'freightdesk_active_loads',
|
|
help: 'Number of active (non-settled) loads',
|
|
});
|
|
register.registerMetric(activeLoads);
|
|
|
|
const totalCommission = new client.Gauge({
|
|
name: 'freightdesk_total_commission',
|
|
help: 'Total commission earned (INR)',
|
|
});
|
|
register.registerMetric(totalCommission);
|
|
|
|
module.exports = { register, httpRequestDuration, httpRequestTotal, activeLoads, totalCommission };
|