const metrics = new MetricsCollector({
endpoint: 'https://metrics.example.com/collect',
apiKey: 'your-api-key',
batchSize: 10,
flushInterval: 30000
});
// Define custom metrics
metrics.define('api_calls', 'counter', 'Number of API calls');
metrics.define('response_time', 'histogram', 'Response time distribution');
metrics.define('error_rate', 'gauge', 'Error rate percentage');
// Track metrics
export default {
async fetch(request) {
const startTime = Date.now();
try {
metrics.increment('api_calls', { endpoint: request.url });
const result = await processRequest(request);
const duration = Date.now() - startTime;
metrics.record('response_time', duration, {
method: request.method,
status: 200
});
return new Response(JSON.stringify(result));
} catch (error) {
const duration = Date.now() - startTime;
metrics.record('response_time', duration, {
method: request.method,
status: 500
});
metrics.increment('error_rate');
throw error;
}
}
};