Files
Varaverk/Plugin/unraid/Tools/uptime_probe.sh
T

48 lines
2.6 KiB
Bash
Executable File

#!/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" "$@"