External HTTP endpoint prober with consecutive-failure ntfy alerts
  • Python 99.6%
  • Dockerfile 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Vela 1225ae66a2
Some checks failed
CI / test (3.10) (push) Failing after 11s
CI / test (3.11) (push) Failing after 8s
CI / test (3.12) (push) Failing after 8s
CI / docker (push) Failing after 5s
Move deployment-specific endpoint/watch lists to .env
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-20 16:03:14 -03:00
.github/workflows ci: add CI and container publish workflows 2026-08-18 13:34:38 -04:00
.gitignore Move deployment-specific endpoint/watch lists to .env 2026-10-20 16:03:14 -03:00
docker-compose.yml Move deployment-specific endpoint/watch lists to .env 2026-10-20 16:03:14 -03:00
Dockerfile Initial release: external HTTP endpoint prober 2026-08-18 11:10:14 -04:00
LICENSE Add MIT license 2026-08-18 11:10:24 -04:00
README.md Add NTFY_MAX_PRIORITY to cap alert priority 2026-10-20 14:36:00 -03:00
soundings.py Add NTFY_MAX_PRIORITY to cap alert priority 2026-10-20 14:36:00 -03:00
test_soundings.py Add NTFY_MAX_PRIORITY to cap alert priority 2026-10-20 14:36:00 -03:00

Soundings

External HTTP endpoint prober with consecutive-failure alerting via ntfy.

Probes service URLs from outside the Docker network to catch port-binding failures, reverse-proxy misroutes, and DNS issues that internal Docker healthchecks miss.

Why

Internal Docker healthchecks confirm "the app process responds to localhost inside the container." They cannot detect broken port bindings, reverse-proxy misroutes, or DNS issues. Soundings probes from the host network — the same perspective a user has.

Configuration

Variable Default Description
ENDPOINTS (required) Comma-separated url:label pairs
PROBE_INTERVAL 60 Seconds between probe cycles
FAILURE_THRESHOLD 3 Consecutive failures before alerting
NTFY_URL http://127.0.0.1:8888 ntfy server URL
NTFY_TOPIC vela ntfy topic for alerts
NTFY_MAX_PRIORITY (none) Ceiling for alert priority (min, low, default, high, urgent). Set to default to keep high/urgent free for messages a human must see
API_PORT 8591 Port for the JSON status API
PROBE_TIMEOUT 10 HTTP request timeout in seconds
RECOVERY_NOTIFY true Send notification when endpoint recovers

API

  • GET /api/status — JSON status of all endpoints
  • GET /health — healthcheck endpoint

Docker

docker compose up -d

Uses network_mode: host so probes hit services via 127.0.0.1 — the same path a user or reverse proxy would take.