Why Monitor tRPC?
tRPC gives you end-to-end type safety but hides all calls behind a single endpoint. Without instrumentation, slow procedures and errors are invisible.
Timing Middleware
` ypescript
import { initTRPC } from '@trpc/server';
const t = initTRPC.context().create();
const timingMiddleware = t.middleware(async ({ path, type, next }) => {
const start = Date.now();
const result = await next();
const duration = Date.now() - start;
console.log(JSON.stringify({ procedure: path, type, duration_ms: duration, ok: result.ok }));
return result;
});
export const publicProcedure = t.procedure.use(timingMiddleware);
`
Health Check for External Monitoring
ypescript
// pages/api/health.ts
export default function handler(req, res) {
res.json({ status: 'ok' });
}
Point Vigilmon at /api/health for uptime monitoring.
Alert on Slow Procedures
ypescript
const SLOW_MS = 500;
// inside timing middleware after duration is calculated:
if (duration > SLOW_MS) {
console.warn('slow_procedure: ' + path + ' ' + duration + 'ms');
}
Key Takeaways
- Wrap all procedures in a timing middleware
- Add /health for external uptime checks via Vigilmon
- Alert on per-procedure latency spikes
Top comments (0)