Status · Guides
Check a site or an API
An HTTP check calls an address on a schedule and reads the answer. It's the monitor for anything with a URL: a site, an API, a health route.
Add an HTTP check
On the project's HTTP checks page, choose Add HTTP check. You need the editor or admin role.
| Field | What it does |
|---|---|
| Name | As your team says it: "Website", "API". Alerts and the pages use it. |
| Address | http:// or https://, at a public address. A health route that checks what matters, such as Laravel's /up, tells you more than a home page. |
| Environment | Which of the project's environments it watches, guessed from the address and the name: staging.example.com is staging. The project's environments are set at id.my-beast.com. |
| Method | GET or HEAD. A HEAD has no body, so it can't look for a text. |
| Check every | 30 seconds, 1 minute or 5 minutes. Your plan sets the shortest: shorter ones are shown, but can't be chosen. |
| Expected status | Blank: any 2xx, with redirects followed. One code, such as 301: only that one passes, and a 3xx here is read as it comes, not followed. |
| The answer contains | A word the page shows when all is well, such as ok, looked for in the first 512 KB of the answer. |
The form's other parts are about telling people and the public page: severity, how long to wait before telling, what it depends on, and its name, group and slowness there. They're explained in When people are told and Show a monitor.
Choose Add HTTP check. Its first check runs within 15 seconds, and until then it's Waiting.
When it's down
Each check waits up to 10 seconds for the whole answer. A check passes when the status is right (any 2xx, or the one you expect) and, if you set one, the text is in the answer. Anything else fails, and the reason is kept in words:
| Reason | What happened |
|---|---|
| Timed out after 10 s | No whole answer came within the time limit, or it stopped after its headers. |
| Answered 503 | The status wasn't a 2xx, or wasn't the one you expect ("Answered 200, expected 301"). |
| Answered 200, but "ok" is not in the answer | The answer doesn't contain the text you set. |
| The address's host name does not resolve | DNS has no address for the host. |
| Connection refused: nothing answers at this address | The server is up, but nothing listens on that port. |
| The certificate is not trusted (expired, self-signed or incomplete chain) | HTTPS failed: the other TLS reasons say which part. |
One failure isn't a down yet. The monitor shows as Checking again, and the next check comes 15 seconds later. A second failure in a row makes it Down, and the downtime starts at the first failed check. One check that passes makes it Up again.
A down is told within a minute, or after the wait you set on the monitor. When people are told has the rest.
What you see
The HTTP checks page puts problems first: tabs for Down, Checking again, Paused, Waiting and Up, and a filter by environment once the checks watch more than one. Each row says how the check is in words ("Down for 12 min", "Answered 503"), shows its last 30 checks as a strip, its median answer time and its uptime.
A check's own page answers the alert, top to bottom:
- how it is now and since when, and who said they're on it,
- while it's down, its last answer as it came (the status, a few headers, the start of the body, the timings and the IP address), who was told and whether it reached them, and what changed right before, such as a deploy,
- its uptime, its median and 95th-percentile answer time, and its certificate,
- its answer time per hour over 24 hours or 7 days, its last 60 checks and its last 90 days,
- each downtime, with its reason, how long it lasted and who was told.
Check now runs a check at once, kept like any other, so you can confirm a fix without waiting. Uptime is time, not checks: the share of the time it was watched that it was up. Time paused or waiting doesn't count.
Certificates
An https:// check notes the certificate it meets: who issued it and when it expires. The check's page shows it. 14 days before it expires, the project's alert channels hear of it once. A renewed certificate is a new one, with its own warning.
Once a certificate has expired, every check fails, and the monitor goes down and is told like any other down.
Addresses Status calls
Status calls public addresses only. An address on localhost, on a private network or at a cloud's metadata address is refused when you add it. It's checked again before every check, and as each connection is made, so a name that later points somewhere private isn't called. A redirect to such an address isn't followed, and the check fails saying so.
All checks come from our own servers, from one place. Each one says who it is with this header, so you can find Status's calls in your logs:
| User-Agent | MyBeast-Status/1.0 (+https://status.my-beast.com) |
When Status loses its own network
Pause, change or remove
- Change, on the check's page, opens the same form. A check kept in code is changed back by the next deploy's list: change it there instead (Keep monitors in code).
- Pause stops its checks until you choose Resume. It still counts toward your plan's monitors.
- Remove deletes it. Removed while it was down, the channels that told the down hear "Removed while down", and its incident is resolved. Paused while down, they hear "Paused while down", and its incident stays open.