Troubleshooting
Start from what you see: an alert that didn't arrive, a Degraded site, content alerts that look wrong, a heartbeat ping that fails, regions that disagree, a blocked checker or a refused address.
Last reviewed
On this page
This page starts from what you see and works back to the cause. Each section names the screen to open, what the result means and what to change. Where a rule is described in full elsewhere, the section links to it.
An alert didn't arrive
Open the site, choose Notifications, then View Logs. The log shows every attempt with the notification, the trigger, the status and an error. What you find there decides where to look next.
| In the log | What it means | What to do |
|---|---|---|
| Sent | OctoPing handed the message to the channel without an error. | Check the recipient's spam folder, the Slack or Discord channel, or the receiving server's own logs. The channel pages explain each one. |
| Failed | The channel refused the message or couldn't be reached. The Error column says why. | Fix what the error names, such as a removed webhook or a mailbox that doesn't exist, then choose Send Test. |
| Skipped, with the error maintenance | A maintenance window held the alert back. | No action is needed. Down alerts, slow-response alerts and the checker blocked notice are held back inside a window, and recovery and expiry alerts are not. |
| No row at all | No notification decided to send. | Work through the list below. |
When there is no row, one of these is usually the reason.
- The notification is disabled, or the switch for that kind of alert is off. Site goes down also controls expiry and slow-response alerts, and Content changes also controls DNS, robots.txt, WHOIS and status-code alerts.
- The failure count hasn't reached the Retry Threshold. The default is 3 failed checks in a row. On a site checked every 5 minutes, that is about 10 minutes after the site first fails.
- The Notification Interval hasn't passed. The default is 10 minutes between two messages from one notification, measured from the last time it sent anything.
- The probe regions contradicted the failure. The site then reads Partial, and OctoPing sends one checker blocked notice instead of a down alert. See the section on a site that blocks the checker below.
- The site is switched off, or the workspace's monitoring is paused. Nothing is checked, so nothing can alert.
- A recovery alert only follows a down alert. A site that failed and recovered before the threshold sends neither.
- The notification was created without the person's address. A member who joins later isn't added to notifications that already exist.
Choose Send Test on the notification to tell a delivery problem from a rule that didn't fire. A test that arrives means the channel works, and the question is about the rule. The rules are on Alert rules.
A site shows Degraded
Degraded means the site answered, and the latest response took longer than the site's Response Time Alert Threshold. It's set under Advanced request settings, and a site with the field empty can never be Degraded.
- Only the latest response counts. The next check that comes in under the threshold clears the status.
- The time measured is the time until the response headers arrive, so the size of the page doesn't matter.
- A Degraded site is up. Its checks succeeded, so it doesn't count as downtime or as an outage.
- A slow-response alert goes to notifications with the Site goes down switch on, at the first slow response and then no more often than the Notification Interval.
If the status flickers, the threshold is probably close to the site's normal time. Look at the response times on the site's detail page and set the threshold above what the site usually does. The statuses are listed on Statuses.
Content alerts that look wrong
Content monitoring is off by default and checks every 30 minutes once it's on. It compares the page's readable text with the last successful snapshot, after removing scripts, styles and navigation and normalizing whitespace. Any difference in that text is a change.
- In our experience, most alerts that look like false positives come from text that's different on every load. Typical sources are a date or a clock, a visitor counter, a rotating banner or promotion, recommended items, and text shown only to some visitors.
- The alert includes a text diff. Read it first. The changed lines usually name the section that varies.
- The first snapshot is the baseline, so a new check never alerts on its first run.
- A response that isn't successful is never compared, so a short outage doesn't produce a change alert.
There's no way yet to tell the check to ignore part of a page. What you can do today:
- Monitor a more stable URL, such as a page that holds the text you care about, instead of one that shows changing items.
- Turn Content Monitoring off on the site if the page can't be made stable. The site's availability, certificate and other checks keep running.
- Put the quiet team on a notification with Content changes off, and keep another notification with it on for the people who want those alerts. That switch also covers DNS, robots.txt, WHOIS and status-code alerts, so the first notification stops sending those too.
The check is described on the Checks reference.
A heartbeat ping returns ok false
A ping that OctoPing refuses still answers with HTTP 200, and the body says what happened. Read the message in the response.
| message | Cause | What to do |
|---|---|---|
| Invalid ping URL | No heartbeat has this secret key. | Copy the Ping URL again from the heartbeat's page. A key with a missing or extra character matches nothing. |
| Heartbeat monitor is disabled | The heartbeat is switched off, so the ping wasn't recorded. | Switch the heartbeat on again. |
| Too many pings. Please try again later. | The heartbeat is receiving pings too often. | Ping once per run of the job, not in a loop. |
| Payload too large | The JSON body is over 10240 bytes. | Send less. The ping isn't recorded when the body is too large. |
- A job that pings with curl -fsS exits successfully even when ok is false, because curl only fails on an HTTP error. Check for
"ok": truein the response if the job should fail on a bad ping. The response has a space after the colon, so match it withgrep -q '"ok": *true'. - A request answered with HTTP 429 means the address sending the pings made too many requests. Many frequent jobs on one host share that limit.
- A heartbeat can read Unhealthy while pings arrive if they come later than its interval plus its grace period. OctoPing evaluates deadlines every minute, so an alert can follow the deadline by up to that long.
The call is described on Heartbeat ping.
The regions disagree
Each vantage point reports its own result, and a difference between them is information. The primary checker decides when a site goes down and recovers, and the probe regions give a second opinion.
| What you see | What it usually means | What to do |
|---|---|---|
| Every vantage point fails | The site is down or unreachable from everywhere. | Treat it as an outage. The failure reason says whether it's a timeout, a DNS problem, a certificate problem or an HTTP error. |
| The primary checker succeeds and one region fails | A routing or CDN problem near that region. The site stays Online because the primary checker decides. | Look at the failure reason for that region and check your CDN or host for that location. |
| Only the primary checker fails and the regions succeed | The site reads Partial. Something is refusing OctoPing's checker. | See the next section. |
| A region reads No recent data | That probe hasn't reported in the last 20 minutes, so its last result is no longer evidence. | Nothing, unless it stays that way for a long time. A region with no recent data never suppresses an alert. |
Regions report about every 5 minutes, so they can lag a fast primary check by a few minutes. When a failure begins, OctoPing waits up to 10 minutes for the regions to confirm or contradict it, and alerts if they stay silent. See Vantage points and confirmation.
The site blocks the checker
Some sites refuse requests from the addresses OctoPing checks from, usually through a firewall, a bot rule or a country rule. The checker then sees a 403 or 429, or a refused connection, while a visitor and the probe regions load the page.
- If the probe regions reach the site, it reads Partial. It counts as up, a public status page shows it as Operational, and OctoPing sends one informational checker blocked notice for the run instead of a down alert.
- If every vantage point is refused, you get a normal down alert with a failure reason such as Forbidden (HTTP 403) or Too Many Requests (HTTP 429).
There are two ways to clear it.
- Allow the addresses on your firewall. The checker blocked notice lists the addresses to allow when they're known, so use that list.
- Add a header under Custom HTTP Headers in the site's Advanced request settings and write a firewall rule that lets requests with that header through. The primary checker and the probe regions both send it.
A private address is refused
OctoPing checks sites from the public internet, so it doesn't send requests to addresses on private or internal networks. Examples are localhost, 10.x.x.x, 192.168.x.x and a hostname that resolves to one of them.
- When you save a site whose address is refused, the form shows the reason, which names the address and why it isn't allowed. Nothing is created.
- A site that was fine can start failing with the reason Blocked by OctoPing if its DNS now points to a private address, or if it redirects to one. The failure reasons page lists it as the blocked code.
- There's no setting in the app to allow private addresses.
To monitor something inside a private network, make it reachable on a public hostname that you protect with a firewall rule or HTTP Basic Authentication. For a job or a service that can't be reached from outside, use a heartbeat so the job reports to OctoPing, and you don't need to open a port. The reasons are listed on Failure reasons.
Related
- DocsAlert rulesHow a failed check becomes an alert: the retry threshold, the repeat interval, the four triggers, recovery, the default notification, the log and what a maintenance window holds back.
- DocsVantage points and confirmationHow the primary checker and the probe regions confirm a failure, what Partial means and why OctoPing alerts when the probes are silent.
- DocsFailure reasonsThe stable failure codes OctoPing assigns to a failed check, their labels and the order in which a failure is classified.
- DocsHeartbeat pingReport that a scheduled job ran: the ping endpoint, its optional JSON body, every response and the limits.
- GuideTell a regional outage from a real outage before you call the clientRead each location's result, the Partial status and the down alert to decide whether a site is down for everyone, for one region, or only for OctoPing's checker.
- GuideMonitor a staging site behind a password or firewallCheck a staging or preview site that asks for a login or sits behind a firewall rule, using Basic Authentication or a secret header.