#!/bin/bash # ============================================================================================== # ==================================== Uptime Probe ============================================ # ============================================================================================== # # PURPOSE # ───────────────────────────────────────────────────────────────────────────── # Probes every hostname NPM serves, from outside the proxy, once per run. Produces the uptime # percentages and history strip on the Proxies tab, and the wobble list for the Sunday report. # # NPM's access log only describes hosts somebody visited. The host most likely to be quietly # broken is the one nobody visited, and nothing was watching those at all. # # ============================================================================================== # OPERATIONAL MODEL # ============================================================================================== # # A wrapper. The work is in uptime_probe.php, which issues all probes in parallel through # curl_multi so one pass costs about as long as the slowest domain rather than the sum. # # Runs every minute, injected by include/scheduler.php alongside the other background writers. # Nothing about the storage assumes that cadence — everything is counts and time buckets. # # Probes carry the User-Agent Varaverk-Uptime/1.0, which npm_access_stats.sh excludes. Without # that, this monitor becomes fifty thousand requests a day in the logs it reports on. # # ============================================================================================== # RUNTIME MODES # ============================================================================================== # # uptime_probe.sh one pass # uptime_probe.sh --dry-run probe and report, write nothing # uptime_probe.sh --status per-domain uptime table (24h / 7d / 30d / 1y) # uptime_probe.sh --events recent state changes, newest first # # ============================================================================================== # CONFIGURATION # ============================================================================================== # # UPTIME_PROBE_ENABLED master switch # UPTIME_PROBE_TIMEOUT seconds per domain # UPTIME_PROBE_LIST_TTL seconds to reuse the cached domain list from NPM # # ============================================================================================== SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" php "$SCRIPT_DIR/uptime_probe.php" "$@"