Bunny
Bunny CDN as a source, through Log Forwarding. One form to fill in, no code.
Bunny feeds analytics through Log Forwarding. Bunny sends its access log to MetrikStack as it happens, so every request is seen, including cache hits. There is no script, no edge code and nothing to deploy: you fill in one form in the bunny.net panel.
Set up Log Forwarding
- In the MetrikStack dashboard, add a source of kind Bunny edge to your site and copy its ingest token.
- In bunny.net, open your Pull Zone, go to Logging and turn on Log Forwarding.
- Fill in the form:
| Field | Value |
|---|---|
| Hostname | logs.metrikstack.com |
| Port | 6514 |
| Protocol | TCP encrypted |
| Token | the ingest token of your source |
| Format | Plain text |
- Save. Bunny forwards with a delay of up to half a minute, so the first pageviews appear in the dashboard within about a minute of the next visit.
The token is what ties the log lines to your site. Treat it like a password: anyone who has it can send pageviews to your site. If it leaks, rotate it in the dashboard and update the form.
Protocol
Only TCP encrypted works. Log lines contain visitor IP addresses, so
MetrikStack does not accept UDP or plain TCP at all; with either of those
nothing arrives.
Format
Use Plain text. JSON is accepted as well, but plain text is the format
Bunny documents and the one we test against.
What counts
Only GET and HEAD requests for pages become pageviews. Assets (scripts,
styles, images, fonts and the like), redirects and lines that cannot be read
are skipped. Bots are recognised by their user agent and kept out of your
visitor numbers, as with every other source.
Background requests a framework makes for a page are skipped too: the data fetches of Next.js (link prefetching and in-app navigation) and Remix are not pageviews.
Single-page apps
A log only contains what reaches the CDN. On a site that navigates in the browser without loading a new document (Next.js, Remix, Nuxt and similar), Bunny sees the first page of a visit and not the pages after it. Visitors and entry pages are accurate; pageviews per visit come out low. Add the browser script next to the Bunny source to count in-app navigation as well. Requests seen by both are merged, not counted twice.
Bunny's IP anonymization
Bunny anonymizes IP addresses in its logs by default. You can leave that on.
| Bunny setting | Effect in MetrikStack |
|---|---|
| Remove last octet (Bunny's default) | Recommended. Country and region stay accurate, city is slightly less precise. Visitors who share a network and use the identical browser can be counted as one, so unique visitors come out marginally low. Pageviews are unaffected. |
| Full IP addresses | The most precise visitor counts. Bunny only offers this after you sign its Data Processing Agreement. |
| Drop all | Not recommended. Every visitor with the same browser looks identical, so unique visitors and sessions collapse. Pageviews and the country (which Bunny reports separately) still work. |
Whichever you choose, MetrikStack uses the address only to derive the location and the daily visitor hash, and discards it within milliseconds. It is never stored and never written to a log. See Privacy & data retention.
Troubleshooting
- Nothing arrives. Check the protocol is
TCP encryptedand the port is6514, that the token has no spaces around it, and that the source is active in the dashboard. - Fewer pageviews than expected. Assets, redirects and bots are not pageviews. Compare with Bunny's request count for HTML pages only.
- Combining with the browser script. That works; duplicates are merged. See Merging sources.
If you would rather receive Bunny's syslog yourself (for buffering, or to send the log to more than one place), see the relay setup in Access logs.