Health monitoring — what each signal means
Health monitoring — what each signal means
Hubbee monitors every connected site continuously. This page explains every status badge you’ll see and what causes each transition.
The two-dimensional status model
Each site has two independent status signals:
- Connection status — is the site reachable? (
online/offline/unknown) - Health status — is the site functioning correctly? (
ok/warning/critical)
A site can be online but critical (reachable, but PHP is throwing errors). Or offline (we lost contact). The dashboard combines both into a single visible badge, but internally they’re tracked separately.
Connection status — how it’s computed
The WP plugin sends a heartbeat every 5 minutes (configurable in Sites → Settings → Heartbeat interval). Each heartbeat updates last_heartbeat_at.
Hubbee considers a site offline when:
now - last_heartbeat_at > heartbeat_interval × 3
So for the default 5-minute interval, a site flips offline after 15 minutes of silence. With a 1-minute interval, after 3 minutes.
This 3× threshold prevents flapping on a single missed beat. If you want stricter monitoring, lower the heartbeat interval (down to 1 minute on Pro/Agency).
Health status — how it’s computed
Each heartbeat carries a payload from the WP plugin:
- WordPress version
- PHP version
- Plugin version
- Memory usage (PHP, current / limit)
- Disk usage (uploads dir + WP root)
- Last PHP error captured from
wp-content/debug.log - Active theme + slug
- Pending plugin/theme/core updates count
The plugin evaluates these against thresholds and reports a status (ok, warning, critical):
| Trigger | Status |
|---|---|
| PHP version end-of-life (no security support) | critical |
| PHP version >= current stable | ok |
| Memory usage > 90% of limit | warning |
| Disk usage > 95% | critical |
Fatal error in debug.log within last hour |
critical |
| Warning/notice within last hour | warning |
| Pending core update | warning |
| Pending plugin/theme updates (any) | warning |
| Everything green | ok |
The status is the worst of all triggers. One critical trigger makes the whole site critical.
The dashboard badge
Each site card shows a combined badge:
- Green dot + “Online” — Connection online, health OK
- Yellow dot + “Warning” — Connection online, health warning
- Red dot + “Critical” — Connection online, health critical
- Grey dot + “Offline” — Connection offline (we can’t tell health when we can’t reach the site)
- Pale grey + “Unknown” — Connection status hasn’t been determined yet (new site, no heartbeat received)
Hover the badge for the last heartbeat timestamp + specific reason.
How fast are status changes visible?
- Connection → Offline: takes
heartbeat_interval × 3(default 15 min) after the last successful beat - Connection → Online: takes up to 60 seconds after recovery (dashboard polling interval)
- Health changes: immediate on next heartbeat (within 5 min)
If you want faster recovery detection (for monitoring critical production sites), reduce the heartbeat interval. The trade-off is more WP cron cycles and slightly more bandwidth.
The Site Health tab
Inside each site → Health tab. This shows the full detail of every signal:
- Last 24 hours of heartbeats as a timeline
- Memory + disk usage graphs (7 days)
- Pending updates list with severity
- Recent PHP errors with stack traces (Pro+)
Alerting
You can configure notifications per site:
- Email when status changes to Warning or Critical
- Email when site goes Offline > 30 min
- Slack webhook (Pro+) for both transitions
Settings → Notifications → Site Alerts sets defaults; individual sites can override.
Uptime SLO tracking
The dashboard tracks uptime percentage over the last 30 days. It’s calculated as:
uptime_pct = (total_seconds - offline_seconds) / total_seconds × 100
A site that was offline for 1 hour over a 30-day period shows 99.86%. Numbers below 99% trigger a yellow banner; below 95% turns red.
This is the same metric your client sees on your shared status page (Agency plan).
When to worry vs not
| Pattern | Action |
|---|---|
| Single flap (online → offline → online within an hour) | Ignore. Probably a brief network hiccup. |
| Repeated flapping (>3 transitions per day) | Check WP-cron, server load, or the WP host’s network reliability. |
| Persistent offline | Walk through Plugin shows offline. |
| Sudden Critical | Open the Health tab → recent errors. Usually a plugin/theme update went wrong. |
| Gradual Warning over days | Memory/disk creep — investigate before it becomes Critical. |
What this does NOT replace
Hubbee’s health monitoring is for plugin connection + WP-internal signals. It doesn’t replace dedicated uptime monitoring (Pingdom, UptimeRobot, Better Stack) which checks from outside your network. For mission-critical sites, run both — they catch different failure modes.
Was this article helpful?
Still stuck?
Open a support thread and we'll get back to you. Most replies arrive within a few hours on business days.
