Overview
Heroku’s Fir generation exports logs, metrics, and traces as OpenTelemetry (OTLP) signals. A telemetry drain forwards those signals straight to Bronto’s OTLP endpoint — no Logplex, proxy, or intermediate collector. This guide sends the logs signal. (Cedar-generation apps use Logplex log drains instead.)Prerequisites
- A Bronto account and API key (how to create one)
- A Heroku Fir-generation app
- The Heroku CLI installed and authenticated
Add the telemetry drain
Add a drain on your app pointing at Bronto’s ingestion endpoint, sending only the logs signal:<REGION> to eu or us. Heroku sends OTLP/HTTP logs to the /v1/logs path on this endpoint. Telemetry drains are additive, so running this command adds Bronto alongside any existing drains. To forward traces and metrics too, change --signals to logs,traces,metrics.
Verify in Bronto
Open Search and filter byservice.name = <YOUR_DATASET_NAME>. Generate activity in your app (a web request, or heroku logs --app <YOUR_APP_NAME>) and confirm entries appear within a minute. List configured drains with heroku telemetry --app <YOUR_APP_NAME>.
What you will see in Bronto
Logs arrive as OTLP records carrying the app’s stdout/stderr output plus Heroku resource attributes —service.name, severity, and timestamp. Platform logs (router, build, and dyno lifecycle events) are included alongside your application output.
Troubleshooting
- No logs? Run
heroku telemetry --app <YOUR_APP_NAME>and confirm the drain is listed withtransport: httpandlogsin its signals. - Getting 401 errors? Verify the
x-bronto-api-keyvalue is a valid Bronto key with the Ingestion role. - Wrong dataset or collection? Check the
x-bronto-datasetandx-bronto-collectionheaders in the drain’s--headersJSON.

