Errors · Plans and data
Troubleshooting
Start with the test command on the app's server: it says what is set and whether Errors hears the app, in words.
Run the test command
php artisan mybeast:errors-testIt prints the URL, whether the server secret, public key and signing key are set, and the environment. Then it checks in with Errors and prints the answer. It sends no error, so nobody is alerted, and it exits with 1 when something is wrong.
If you cache your config (php artisan config:cache), the app doesn't read .env again until you cache it anew: do that after every change below.
Nothing arrives
"Errors is off here"
Errors is off here: it needs the URL and a server secret (sk_…). Nothing is sent - not even this test.MYBEAST_ERRORS_URL or MYBEAST_ERRORS_SECRET is missing or malformed, or MYBEAST_ERRORS_ENABLED is false. A server secret is sk_, 16 lower-case letters and digits, a dot and the rest; copy it whole.
"Errors refused this server secret"
Errors refused this server secret: it is not one of the project's Errors keys (revoked, another product's, or from before the project was sent again). Take MYBEAST_ERRORS_SECRET from Secrets or the project's Errors settings.The secret isn't one of the project's Errors keys: it was revoked, belongs to another product, or came before the project's keys were made again. Take a current one from Secrets, or make one in Errors' Settings → Keys.
"Errors did not hear this app"
Errors did not hear this app: The service could not be reached: cURL error 6: Could not resolve host …The server can't reach https://services.my-beast.com/errors: check its DNS, its outgoing firewall and any proxy. "The service answered 402" means the project's subscription has ended.
The test works, but errors don't show up
- The exception is in Laravel's
dontReportlist, or caught without being reported. Report it withreport($e), or capture it withErrors::capture($e). - You are looking at another environment: issues are kept apart per environment, and the inbox shows one at a time.
- They wait in the spool because the scheduler isn't running. Run
php artisan mybeast:errors-flush: it says how many it sent. - The project has used up its month's events: your log says so (Past a monthly limit).
"Errors stopped hearing an environment"
An environment heard before has been silent for 3 hours. The SDK checks in once an hour from the scheduler, so the scheduler has most likely stopped, or the server can no longer reach Errors. Start the scheduler, then run the test command.
Browser errors don't arrive
- The page's origin isn't listed in Errors' Settings → Browser origins. Add it exactly as the browser shows it, such as
https://app.example.com. init()returnednull: the config is missing or malformed. Itsurlmust be HTTPS (plain HTTP only onlocalhost,*.localhostand*.test), and itskeyapk_…public key.Errors::guestConfig()returnsnullwithout the public key.install()wasn't called, or was called after the error happened.- The same error is sent once per page load, at most 10 per page load, and errors from browser extensions are dropped. Reload the page to send it again.
Browser errors show as a guest's
MYBEAST_ERRORS_SIGNING_KEYis missing, so no token is made.- The page got
guestConfig(), orclientConfig()with something that isn't an id: your log says so once. - The token was made for another project's public key, and is ignored.
- The page was left open past its token and couldn't renew it: the token route is off (
token_pathisfalse) and nogetTokenwas given.
Browser stacks stay minified
- No source maps were uploaded for the release the page sends. Run
php artisan mybeast:errors-releasein the deploy; Errors' Releases page shows each release's maps. - The page and the upload name different releases. The page sends the release the Laravel SDK reports, so build and upload in the same deploy, with the same
MYBEAST_ERRORS_RELEASE. - The map's name isn't the bundle's file name plus
.map: Errors looks forapp-3fA9xQ1z.js.mapforapp-3fA9xQ1z.js. - The error arrived before the maps: stacks are mapped as errors come in. Upload with
--files-onlybefore the release goes live.
No alerts come
- No channel is connected on your Alerts page, or the channel shows an error there. Send yourself a test.
- The kind is unticked on the project's sheet, or the environment isn't one you ticked.
- The error is from
localortesting: those don't alert unless you tick them. - You are in your quiet hours, or muted (
/muteon Telegram): the Alerts page says until when. - The issue is ignored or snoozed, or isn't new: a known issue alerts only when a customer runs into it.
Customers aren't told
- The project has no webhook: set it in Errors' Settings → Customer notices. Until then "Tell them we're on it" isn't offered, and "it's fixed" waits.
MYBEAST_ERRORS_WEBHOOK_SECRETisn't set, so the route isn't there and your app answers 404.- Your app answers 401: the webhook secret isn't the project's current one, or the server's clock is more than five minutes off.
- A listener throws, so your app answers 500. Errors tries again after 1 minute, 5 minutes, 30 minutes, 2 hours and 6 hours, with the same delivery id.
- It hit nobody Errors counts as a customer: guests, and your own people, are never told (Say who it happened to).