stdout and stderr, one line per console.log), platform lines such as timeouts and process exits, and spans: Vercel’s own (Resolve Route, Invoke Function) and, when instrumented, your code’s. Each log line carries the request’s traceId, the deploymentId and the region the function ran in (executionRegion).
Recommended method
Marketplace connector: its log drain carries runtime logs (source = 'lambda') and its trace drain carries Vercel’s spans for each request.
Alternatives
- OpenTelemetry from code: your own spans (database calls, calls to other services, AI calls), exported over OTLP without a drain fee.
- Drains you configure, for example a log drain filtered to
lambdaonly.
Worth watching
In a project using Vercel
services, a top-level regions setting didn’t reach the functions; they ran in iad1. Setting regions in each service’s functions configuration fixed it. executionRegion is how you’d notice. An eve agent writes its own build output, which ignores that setting too; the lab sets the region in each eve function’s configuration after the build (scripts/patch-eve-vercel-output.mjs).
Timeouts also cost money. In the lab, streaming responses whose browser had gone away kept running until the 300-second limit and held their instance, and its memory, for the full five minutes. supportsCancellation didn’t end them: it only passes an abort signal the code has to act on. A lower maxDuration for the streaming route did.
See Ingesting Vercel Data into Bronto for the full mapping.

