DEV Community

Vigilmon
Vigilmon

Posted on

How to Monitor tRPC APIs: Procedure Latency and Uptime

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)