Work in progress · Version 1.1, last updated 6 November 2026
Quality attributes

Observability and SLIs

Datadog collects traces, metrics, browser RUM and finder logs, in production only. The website, Drupal and the finder each have live SLOs, monitors, synthetic checks and a dashboard, defined as Terraform.

Telemetry architecture

Figure 35. Telemetry flows. Development and staging send nothing.
Figure 35. Telemetry flows. Development and staging send nothing.
System Traces Browser RUM Logs Metrics Synthetic checks
Next.js Every request (sample rate set to 1; the design default is 20%, with errors and requests over 3 s always kept); emails and ids redacted 20% of sessions Acquia only Heap, garbage collection, event loop, load shedding, per server Origin check past Cloudflare, plus home, blog and the account host through Cloudflare, every 5 minutes from 3 locations; sitemap hourly; smoke test after each deploy
Drupal Every request (sample rate set to 1; the design default is 1%, with errors and slow requests always kept) n/a Acquia only Purge queue, dead letters, overdue purges, export failures Delivery API through the cache and from PHP and MySQL, every 5 minutes from 2 locations
Cloudflare n/a n/a Not exported Requests, cache status, origin status by host None
Finder 20% sample, across both services n/a Errors, 5xx, slow and a 5% sample, kept 30 days; full archive in S3 for a year Hosts, load balancers, Lambdas, pipeline lag Health and search box for each API, every 5 minutes from 2 locations; 200 within 2 s
PADI APIs Client-side spans from Next.js PADI-owned checks for sign-in and eLearning

SLI catalogue

# Journey or service SLI (good events ÷ valid events) Data source SLO
1 Page availability HTML responses without 5xx ÷ all HTML requests, per host Cloudflare metrics 99.9%
2 Page latency at the edge HTML first byte < 500 ms ÷ all HTML Synthetic checks 99% of 5-minute windows
3 Origin render latency 5-minute windows with p95 < 3 s Frontend APM 99% of windows
4 Frontend application availability Requests without 5xx ÷ requests (5xx answered at the edge count under 1) Frontend APM 99.9%
5 Largest Contentful Paint Initial page loads with LCP ≤ 2.5 s ÷ initial page loads RUM 75%
6 Content freshness Tagged changes visible ≤ 8 min ÷ change canaries Purge metrics and canaries 99%
7 Purge pipeline Items purged within 6 min ÷ items queued Purge metrics 99.9%
8 Drupal delivery API availability Requests without error ÷ requests Drupal APM 99.9%
9 Drupal delivery API latency 5-minute windows with p95 < 3 s Drupal APM 95% of windows
10 Finder API availability Non-5xx ÷ requests, per API Finder APM 99.9%
11 Finder API latency 5-minute windows with p95 < 500 ms Finder APM 99% of windows
12 Finder data freshness Changes reaching search < 10 min ÷ changes Pipeline metrics 99%
13 Sign-in to MyPADI Dashboards loaded < 10 s ÷ sign-ins Frontend and PADI API spans 95% (depends on PADI APIs)
14 Account sign-in Sign-in check success PADI synthetic checks 99.5%
15 Edge Worker health Invocations without exception ÷ invocations Cloudflare Workers metrics 99.9%
16 Uptime of www and CMS Synthetic success from 2+ locations Synthetic checks 99.9%

SLOs 4, 5 and 8 to 11 are live in Datadog, measured over 30 and 7 days. Cache hit ratio is a health indicator rather than an SLO: alert below 25%.

Monitors and dashboards

Monitors, SLOs, synthetic checks and dashboards are Terraform in the repository whose code produces the signal: padi.com for the frontend, drupal.padi.com for Drupal and its purge job, and search.padi.com for the finder. edge.padi.com applies the Cloudflare monitors and the cross-layer dashboard by script.

Area Monitors
Frontend No server reporting; no requests traced for 15 min; 5xx over 1% per route; more than 5% of requests taking 3 s or more; a server shedding load for 5 min; calls to PADI APIs failing over 5%; pages failing to render in the browser
Drupal Delivery API p95 over 3 s; delivery API errors over 5%; no requests traced for 15 min; more than 50 errors logged in 15 min; cron not run for 3 h; trace exports failing; more than one promoted page; purge job stopped; dead letters; purge queue backing up; overdue purges; whole-site refresh waiting too long; Varnish purges failing
Edge Origin 5xx over 1% per host; analytics poller stopped
Finder API p95 over 500 ms; 5xx over 5%; host memory below 15% and root disk above 85%; pipeline Lambda failures, timeouts and out-of-memory; change stream more than 10 min behind; a change late reaching FinderDB or its documents, or not applied; a column meant to be withheld arriving from PADI Travel; a listed key waiting more than 10 min; index disagrees with FinderDB

For the frontend, the monitors read together: a failing origin check means the application is down; no server reporting while the check passes means telemetry has stopped; servers reporting with no requests traced means the application is stuck or its trace export has failed.

Dashboards: padi-frontend (requests, calls out, servers, browser), Drupal prod, padi.com edge cache and origin health (traffic, cache, origin, purge across the layers), and finder overview, search and locator.