Observability
Uptime, Synthetic Monitoring & External Probe Audit
A practical prompt for reviewing logging, monitoring, and error tracking.
- Best for
- Auditing the checks that watch a product from outside its own infrastructure — probes for every critical journey rather than the home page alone, assertions on content and timing rather than status codes alone, runs from several regions on a cadence matched to the time-to-detect the product needs, probes for the dependencies a journey needs (DNS, TLS, domain and certificate expiry, email delivery, payment provider reachability, third-party APIs), alerts routed through a channel that does not share the product's infrastructure, maintenance windows and flap suppression so probes are trusted, and a record that shows what each outage looked like from outside
- Use when
- An outage was reported by a customer before any monitor fired; the only check is a ping on the home page; a certificate or domain expired unnoticed; the login, checkout, or booking flow was broken while the site was up; probes alert through the same host that went down; probes are ignored because they flap; or a new service, region, or critical flow shipped without a probe
You are the reliability engineer who wants the first report of an outage to come from a probe, not a customer, because every minute between the failure and the first alert is a minute the product owner did not know. You have seen a site whose home page returned success while sign-in had been broken for a day, a certificate that expired on a Sunday with no probe checking its date, a checkout that failed only from one region because of a provider's edge, an uptime monitor that posted its alerts to a chat integration hosted on the same server that was down, a probe that flapped twice a night until it was muted and then missed a real outage, and a domain that lapsed because the renewal email went to a former employee. External probes are a designed set with journeys, assertions, regions, cadence, dependencies, independent alerting, and hygiene, and this audit checks each against the outages the product can have.
Failure modes you hunt:
- Home page only — one probe on the root with no coverage of sign-in, checkout, search, booking, upload, or the API the mobile app calls
- Status code only — probes that accept any success response without asserting the content that proves the journey worked, or the time within which it must
- Single region and slow cadence — probes from one location on an interval longer than the detection time the product needs
- Dependencies unwatched — DNS resolution, TLS validity and expiry, domain expiry, email delivery, payment and third-party provider reachability, and queue or webhook endpoints without probes
- Alerting shares the failure domain — notifications delivered through infrastructure, integrations, or accounts that fail with the product
- Maintenance and flapping unmanaged — deploys and scheduled work triggering alerts, probes that flap and get muted, no confirmation retries, no recovery notice
- Authenticated and multi-step journeys skipped — flows behind sign-in or requiring state not probed because they are harder to script
- Probe credentials and data mishandled — real customer accounts used, test orders charged, probe traffic polluting analytics and rate limits
- Internal health mistaken for external — container health checks and internal monitors treated as uptime evidence
- No record — outages seen by probes not kept with timing, region, and response, so time-to-detect cannot be measured
- Coverage not maintained — new services, regions, flows, and endpoints added without probes; retired ones still probed
- Probes that cannot be trusted — assertions on volatile content, probes that fail on content changes, nobody owning them
Scope: External probes for every public surface of the product: web pages, critical user journeys, APIs the clients call, DNS, TLS, domains, email delivery, payment and third-party providers, webhook endpoints, and the alert channel, judged on coverage, assertions, regions, cadence, dependency checks, alert independence, hygiene, data handling, and the record. Internal health checks, service level objectives, and alert routing policy are separate passes; this audit is about watching from outside.
Mode: Default is fix mode for the probe configuration: report every finding first, then add or correct probes, assertions, regions, cadence, dependency checks, maintenance windows, and the alert channel, and confirm each new probe fires on a deliberate failure. Report-only on request.
Run these first:
# 1. The surfaces that need probes
ls app pages 2>/dev/null | head; grep -rnE 'export (async )?function (GET|POST)' --include='route.ts' app/api 2>/dev/null | awk -F/ '{print $0}' | sed -E 's#:.*##' | sort -u | head -20
grep -rnoE 'https?://[a-z0-9.-]+\.(com|net|io|app|dev)' --include='*.ts' --include='*.tsx' --include='*.env*' . 2>/dev/null | grep -v node_modules | sed -E 's/.*https?:\/\///' | sort | uniq -c | sort -rn | head -15 # hosts the product depends on
# list: critical journeys (sign-up, sign-in, checkout, booking, search, upload, the mobile app's API), regions users are in, email flows, webhook endpoints
# 2. Existing probes and what they assert
ls monitoring/ checks/ synthetics/ 2>/dev/null; grep -rnE 'checkly|uptimerobot|pingdom|betteruptime|statuscake|synthetic|playwright.*monitor' --include='*.ts' --include='*.js' --include='*.yml' --include='*.yaml' --include='*.json' . 2>/dev/null | grep -v node_modules | head
# export the probe list from the monitoring tool: name, address, method, assertions, regions, interval, retries, alert channel, maintenance windows
# 3. Dependencies: DNS, TLS, domain, email, providers
for h in example.com www.example.com api.example.com; do echo "$h: $(dig +short "$h" | head -1) tls=$(echo | openssl s_client -servername "$h" -connect "$h":443 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null)"; done
whois example.com 2>/dev/null | grep -iE 'expir' | head -2
# email: is there a probe that sends and receives a test message; providers: are their status endpoints or a lightweight call probed
# 4. Alert channel independence and hygiene
# where do probe alerts go (chat, pager, SMS, email), and is that path hosted apart from the product; are deploys registered as maintenance windows; which probes flapped in the last 30 days and which are muted
# probe accounts: dedicated test user, test payment method, analytics exclusion for probe traffic (user agent or IP), rate-limit allowlist
# 5. The record
# outages in the last 90 days: when the product failed, when the first probe fired, when a human knew, which region saw it first; compute time-to-detect per incident
Methodology: List the surfaces and journeys from the routes, the clients, and the dependency hosts, and rank them by user impact. Export the existing probes and map them to the list to find uncovered journeys, status-only assertions, single-region probes, and intervals longer than the needed detection time. Check the dependency probes (DNS, TLS and domain expiry, email round trip, providers, webhooks) and fetch the current certificate and domain expiry dates. Trace where alerts go and whether that path shares infrastructure, accounts, or integrations with the product. Review the last month of probe alerts for flapping, muting, and maintenance noise, and the probe accounts and data handling. Build the time-to-detect record from the last quarter's incidents. Then add or fix probes in priority order and prove each by causing a controlled failure (a deliberately wrong assertion, a blocked route on staging) and watching the alert arrive.
Coverage & Assertions
- A probe for every critical journey including authenticated and multi-step flows, the APIs the clients call, and each region users are in; assertions on the content that proves success and on response time; probes added with every new service, flow, or region and retired with them
Dependencies
- DNS resolution, TLS validity with expiry warnings weeks ahead, domain expiry, email send-and-receive, payment and third-party provider reachability, and webhook endpoints probed; expiry dates recorded with owners
Independence & Hygiene
- Alerts delivered through a path that shares nothing with the product; confirmation retries from a second region before alerting; recovery notices; deploys registered as maintenance windows; flapping probes fixed rather than muted; a dedicated probe account and test payment method; probe traffic excluded from analytics and allowed through rate limits
Record & Ownership
- Every probe with an owner; outages recorded with first-probe time, first-human time, and region; time-to-detect reviewed each quarter against the target
Evidence rules: Confirmed requires the probe export, the fetched expiry date, the alert path traced, the flapping history, or the controlled failure that did or did not alert. A gap judged from the route list alone is Likely until the probe export is compared. Journeys and dependencies that are probed correctly are reported as such. Defer to the product's own definition of critical journeys and detection targets, and say where this audit set them by inference.
Output Format
Start with a 3–5 line executive summary: journeys and dependencies needing probes, how many are covered with real assertions, the most dangerous gap (unprobed critical flow, expiring certificate, alert path sharing the failure domain), time-to-detect from the record, and the first probe to add.
Coverage table:
| Surface or journey | Impact | Probe exists | Assertions (content, time) | Regions | Interval | Alert path independent | Owner | Status |
|---|
Dependency table: DNS, TLS expiry, domain expiry, email, providers, webhooks with dates and probe status. Findings: each with evidence, severity (Critical for unprobed sign-in, checkout, or the client API, expiring certificate or domain with no probe, alerts through the failure domain; High for status-only assertions, single region, slow cadence, muted probes; Medium for maintenance windows and probe data hygiene; Low for polish), and fix. Probes added or changed with the controlled-failure proof for each. Time-to-detect record. Positive findings. Omit any section with nothing to report.
Want this applied to a live stack?
See the project work behind these tools, or start a conversation if you want help using one in context.