freightdesk/webapp/src/services/metrics.js

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 };