← Home ← Codex ← DEBT ← Engine
Browse by Category
+ added · updated 7d
← Back to glossary

Uptime Monitoring

Observability PHP 5.0+ Intermediate
debt(d7/e3/b3/t7)
d7 Detectability Operational debt — how invisible misuse is to your safety net

Closest to 'only careful code review or runtime testing' (d7). The absence of uptime monitoring or a misconfigured health endpoint (always returning 200) is not caught by any compiler, linter, or standard SAST tool. Tools listed (UptimeRobot, Pingdom, StatusPage, BetterStack) are external services that must be deliberately set up — their absence is invisible until a real outage occurs and no alert fires. Code review might catch a trivially broken health endpoint, but regional blind spots or shallow checks slip through easily.

e3 Effort Remediation debt — work required to fix once spotted

Closest to 'simple parameterised fix (replace pattern with safer alternative)' (e3). The quick_fix describes setting up an external monitoring service — a small, bounded task. Fixing a shallow health endpoint to actually verify dependencies (DB, cache, etc.) may touch a few files but is still contained within one component. Slightly above e1 because multiple common_mistakes (geographic coverage, alert escalation, deep-check endpoints) may each require a small configuration or code change.

b3 Burden Structural debt — long-term weight of choosing wrong

Closest to 'localised tax' (b3). The monitoring setup and health endpoint live in a specific infrastructure/observability layer rather than permeating the entire codebase. Applies only to web contexts. Once set up correctly, the rest of the codebase is largely unaffected, though ongoing alert routing and status page maintenance impose a small persistent operational tax.

t7 Trap Cognitive debt — how counter-intuitive correct behaviour is

Closest to 'serious trap (contradicts how a similar concept works elsewhere)' (t7). The canonical misconception is precise and dangerous: an HTTP 200 response is widely understood as 'everything is fine,' yet the health endpoint can return 200 while the database, cache, or payment provider is completely broken. This directly contradicts the developer's reasonable mental model. Multiple common_mistakes reinforce this — checking only the homepage (which may be cached), monitoring from a single location, and ignoring alert escalation — each represents a plausible-but-wrong implementation that provides false assurance.

About DEBT scoring →

Also Known As

Pingdom UptimeRobot synthetic monitoring RUM health check monitoring

TL;DR

Continuously checking that your application is reachable and responding correctly — synthetic monitoring (scripted checks from external locations) vs real user monitoring (RUM from actual traffic).

Explanation

Synthetic monitoring: external agents (Pingdom, UptimeRobot, Checkly, AWS CloudWatch Synthetics) send HTTP requests on a schedule and alert on downtime or degradation. Checks: simple HTTP ping, multi-step flows (login, checkout), API endpoint verification. Real User Monitoring (RUM): instruments actual user traffic — measures real-world performance, captures Core Web Vitals, detects regional issues. Both complement each other: synthetic catches outages quickly (1-minute intervals), RUM shows real user experience. PHP health endpoint: respond 200 only if DB, cache, and critical services are all healthy.

Common Misconception

HTTP 200 response means the application is working — a health check that returns 200 even when the database is down provides false assurance; health endpoints must verify actual dependencies.

Why It Matters

Without uptime monitoring, you learn about downtime from customer support tickets — with monitoring, you know within 60 seconds and can respond before most users notice.

Common Mistakes

  • Health endpoint that always returns 200 regardless of dependencies.
  • Monitoring only from one geographic location — regional DNS or CDN issues go undetected.
  • No alert escalation — single point of contact for 3am alerts causes burnout.
  • Checking homepage only — deep application functionality (checkout, API) may be broken while the homepage serves from cache.

Code Examples

✗ Vulnerable
// Shallow health check — always 200:
// GET /health
echo json_encode(['status' => 'ok']); // Returns 200 even when DB is down
http_response_code(200);
// Uptime monitor: all green
// Reality: every user request is failing with 500
✓ Fixed
// Deep health check:
GET /health → 200 if all healthy, 503 if any dependency down:

$checks = [
    'database' => fn() => $pdo->query('SELECT 1'),
    'cache'    => fn() => $redis->ping(),
    'queue'    => fn() => $horizon->isRunning(),
];
$failed = [];
foreach ($checks as $name => $check) {
    try { $check(); } catch (\Throwable) { $failed[] = $name; }
}
$healthy = empty($failed);
http_response_code($healthy ? 200 : 503);
echo json_encode(['status' => $healthy ? 'ok' : 'degraded', 'failed' => $failed]);

Added 16 Mar 2026
Edited 12 Jun 2026
Views 113
Rate this term
No ratings yet
🤖 AI Guestbook educational data only
| |
Last 30 days
0 pings W 1 ping T 1 ping F 0 pings S 1 ping S 0 pings M 0 pings T 0 pings W 2 pings T 0 pings F 2 pings S 0 pings S 0 pings M 0 pings T 0 pings W 1 ping T 1 ping F 2 pings S 1 ping S 0 pings M 0 pings T 0 pings W 0 pings T 0 pings F 0 pings S 2 pings S 2 pings M 0 pings T 0 pings W 0 pings T
No pings yet today
No pings yesterday
Amazonbot 11 SEMrush 10 PetalBot 10 Ahrefs 8 Bing 6 ChatGPT 6 Google 5 Scrapy 4 Perplexity 3 Twitter/X 2 Applebot 2 Claude 1 Meta AI 1 Brave Search 1 Sogou 1 Unknown AI 1
crawler 68 crawler_json 4
🧱 FUNDAMENTALS — new to this? Start with the ground floor.
Monitoring observability Monitoring is the practice of continuously watching your systems — servers, apps, and services — to see if they're healthy and to get alerted when something breaks.

You cannot fix what you cannot see; monitoring is the difference between finding problems in minutes versus hours. Every production system, from a hobby project to a bank, depends on it.

💡 Monitor what your users experience, not just what your servers report.

Ask Codex about Monitoring →
DEV INTEL Tools & Severity
🟠 High ⚙ Fix effort: Low
⚡ Quick Fix
Set up external uptime monitoring (UptimeRobot, Pingdom) that checks from outside your network — internal health checks miss DNS, CDN, and ISP failures
📦 Applies To
PHP 5.0+ web
🔗 Prerequisites
🔍 Detection Hints
No external uptime monitoring; status page not configured; no alert when site is down from external perspective
Auto-detectable: ✓ Yes uptimerobot pingdom statuspage betterstack
🤖 AI Agent
Confidence: Low False Positives: Medium ✗ Manual fix Fix: Medium Context: File

✓ schema.org compliant