Skip to content

Collect Vercel logs in Osuite

Vercel delivers observability data with Drains. A log drain POSTs runtime, build, and static logs as newline-delimited JSON to an HTTPS endpoint you configure. There is no OpenTelemetry Collector receiver that speaks Vercel’s log schema natively, so the practical path is to receive that JSON with the Collector’s webhook_event receiver and forward it to Osuite over OTLP.

  • A Vercel project on a Pro or Enterprise plan, with the Drains permission.
  • An OpenTelemetry Collector from the Contrib distribution (otelcol-contrib) reachable from the internet over HTTPS (directly or behind a reverse proxy).
  • Your Osuite ingest endpoint and token.

This configuration accepts Vercel’s newline-delimited JSON on a dedicated path and forwards each line as a log record to Osuite.

receivers:
webhook_event:
endpoint: 0.0.0.0:8088
path: /vercel/logs
split_logs_at_newline: true
read_timeout: "1s"
processors:
batch:
exporters:
otlp/osuite:
endpoint: ingest.<region>.osuite.io:443
tls:
insecure: false
headers:
x-osuite-ingest-token: <your-ingest-token>
service:
pipelines:
logs:
receivers: [webhook_event]
processors: [batch]
exporters: [otlp/osuite]

Each drained line becomes a log record whose body is the raw Vercel JSON object (message, source, deploymentId, requestId, and more). To promote those fields to attributes and set severity, add a transform processor to the pipeline — see Log pipelines.

Add the drain to your Vercel project, then set its endpoint to the Collector’s public URL and path:

  • Project → Settings → Drains → Add (or the Drains section of your team settings).
  • Data type: Logs. Delivery: Custom endpoint.
  • Endpoint URL: https://<your-collector-host>/vercel/logs.

Vercel verifies the endpoint before the drain goes live; complete that verification at your proxy if the raw receiver does not satisfy it.

What you should see

Vercel log lines appear in the Logs Explorer within a minute or two of a deployment or request. Each record’s body is the Vercel JSON payload; once a transform processor is added, source and deploymentId become filterable attributes.

If nothing arrives, confirm the drain endpoint is reachable over HTTPS from the public internet and that Vercel’s verification succeeded — a drain that fails verification is never activated. Check the Collector logs for the incoming POSTs; a 404 means the path in the receiver does not match the drain URL. If records arrive but are unstructured, add the transform processor to parse the JSON body.

No data in Osuite after a few minutes? Work through these checks.

  • Endpoint — confirm the exporter targets exactly ingest.<region>.osuite.io:443 for your region, over TLS.
  • Token — confirm the ingest header carries a valid <your-ingest-token> and has not been rotated.
  • Pipeline — confirm the signal you expect (traces, logs, or metrics) is wired into an active pipeline with the otlp/osuite exporter attached.
  • Export errors — check the application or Collector logs for OTLP export failures (auth, DNS, TLS, connection refused).
  • Network — confirm the host has outbound access to the ingest endpoint on port 443.
  • Timing — allow up to a minute for the first data to appear before assuming a failure.

Still stuck? Ask the Investigation Agent or contact support.