No more 502 guesswork: all users can now monitor origin errors

Posted by:

A mistyped hostname? A DNS failure? A misconfigured loop between pull zones? Debugging 502s is a bummer when the smoking gun could be one of a dozen causes, and your downtime clock is ticking.

If you’re flying blind, that is. Bunny users deserve better, which is why we just launched origin error monitoring — available now on all plans at no extra cost!

What’s covered in the Origin errors view

Hopefully you won’t need it anytime soon (touch wood), but when your website does go down, you can start debugging by heading to the Origin errors tab under Monitoring:

This view lets you browse and filter origin errors as they occur, helping you pinpoint the cause of connection or availability issues.

Problems when establishing a connection to your origin or transient errors somewhere along the request path will appear here, along with context like region, edge server, and error code.

The errors covered include both origin-side failures, such as:

  • dns_lookup
  • http_timeout
  • http_request_failure

…and, on rare occasions, internal errors, such as:

  • http_loop_detected
  • notfound_localdb

Head over to the docs for a full list of error types alongside their descriptions.

How to get origin error logs programmatically

If you prefer pulling logs into your own systems, the same data visible in the dashboard is also accessible via API.

The origin errors API returns a JSON payload with detailed fields for each failed request, including the timestamp, pull zone ID, message, error code, status code, and request metadata like headers, edge zone, and IP.

Each entry represents a single origin failure. You can authenticate with your API key or user JWT, and query by pull zone ID and date.

Responses include nested objects for request headers, timings, and origin details, for example:

{ "logs": [ { "logId": "a6a6b755-b6a4-46be-b523-aa82a17d4bc5", "timestamp": 1728952065848, "log": "{\"RequestUrl\":\"/apikey\",\"PullZoneId\":308006,\"Message\":\"Origin DNS lookup failed...\",\"ErrorCode\":\"dns_lookup\",\"StatusCode\":\"502\"}", "labels": { "ErrorCode": "dns_lookup", "StatusCode": "502", "ServerZone": "CA" } } ] }

For more details on programmatic access, head over to the origin errors API reference.

How origin error monitoring works under the hood

As part of our observability stack, the new feature is powered by ClickHouse, which has become a gold standard analytics engine for real-time workloads at scale. This lets us provide origin error logs practically as they occur and serve tens of thousands of users.

Currently, the retention policy for origin error logs is set to 3 days, matching our HTTP CDN logs. This short window lets us keep things fast, lightweight, and free for everyone. If you’d like to retain the logs for longer, you can fetch them over the API and handle storage on your end.

Why we shipped origin error monitoring for everyone

You’d think a feature as basic as this should be fairly standard in the CDN world. Turns out, vendors usually deem it a nice-to-have, and another thing to lock behind a plan tier or paid add-on.

That’s not how we hop. As an infra provider, we need to see what’s going on anyway, so why not share that with the users? We believe everyone deserves observability as a baseline, so we launched this feature on all plans at no extra cost.

Wishing you as few 502s as possible and less sweat debugging them with origin error monitoring!