the-tip-top-frontend/app/api/metrics/route.ts
soufiane 86d90c8f3e feat: add Prometheus metrics endpoint
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 15:17:56 +01:00

39 lines
1.0 KiB
TypeScript

import { NextResponse } from 'next/server';
import client from 'prom-client';
// Create a Registry to register the metrics
const register = new client.Registry();
// Add default metrics (CPU, memory, etc.)
client.collectDefaultMetrics({ register });
// Custom metrics
const httpRequestsTotal = new client.Counter({
name: 'http_requests_total',
help: 'Total number of HTTP requests',
labelNames: ['method', 'path', 'status'],
registers: [register],
});
const httpRequestDuration = new client.Histogram({
name: 'http_request_duration_seconds',
help: 'Duration of HTTP requests in seconds',
labelNames: ['method', 'path'],
buckets: [0.1, 0.3, 0.5, 0.7, 1, 3, 5, 7, 10],
registers: [register],
});
export async function GET() {
try {
const metrics = await register.metrics();
return new NextResponse(metrics, {
status: 200,
headers: {
'Content-Type': register.contentType,
},
});
} catch (error) {
return NextResponse.json({ error: 'Failed to get metrics' }, { status: 500 });
}
}