03cbe283df
Rework the VHS demo so the README screenshots actually entice a download. Demo data / tooling: - seed.yaml: real, reachable service URLs (detail now shows nextcloud.com, not example.com); Auth Portal -> non-resolving home.arpa host so it reads as a believable, reliably-DOWN monitor - backfill: transient outages for Nextcloud/Jellyfin/Immich aligned with their state changes (uptime % now matches); log timestamps derived from now so the Logs view reads chronologically; real SSL warning; three probe nodes across regions; seeded alert send health - demo.tape: shorter warm-up, added Nodes + theme captures, ordered so every shot stays inside the 60s node-freshness window (consistent probe count) - vhs/crop: new tool to trim the empty terminal border around each screenshot - setup.sh: build backfill up front for deterministic timing; UPTOP_DEMO=1 Supporting code: - persist alert send health (new alert_health table, load on startup, best-effort save on send) so health/last-sent survive restarts - latency Min/Avg/Max ignore failed checks (no more "Min 0ms") - correct "probe"/"probes" pluralization - stable status dot instead of an animated spinner under UPTOP_DEMO
142 lines
2.8 KiB
YAML
142 lines
2.8 KiB
YAML
alerts:
|
|
- name: Discord Homelab
|
|
type: discord
|
|
settings:
|
|
url: https://discord.com/api/webhooks/1234567890/demo-token
|
|
|
|
- name: Ntfy Alerts
|
|
type: webhook
|
|
settings:
|
|
url: https://ntfy.example.com/homelab-alerts
|
|
|
|
- name: Email Oncall
|
|
type: email
|
|
settings:
|
|
host: smtp.example.com
|
|
port: "587"
|
|
user: alerts@example.com
|
|
pass: "••••••••"
|
|
from: alerts@example.com
|
|
to: oncall@example.com
|
|
|
|
- name: Slack Ops
|
|
type: slack
|
|
settings:
|
|
url: https://hooks.slack.com/services/T00000/B00000/demo-token
|
|
|
|
monitors:
|
|
# HTTP — homelab services
|
|
- name: Nextcloud
|
|
type: http
|
|
url: https://nextcloud.com
|
|
interval: 30
|
|
alert: Discord Homelab
|
|
check_ssl: true
|
|
expiry_threshold: 14
|
|
max_retries: 2
|
|
|
|
- name: Jellyfin
|
|
type: http
|
|
url: https://jellyfin.org
|
|
interval: 30
|
|
alert: Discord Homelab
|
|
max_retries: 2
|
|
|
|
- name: Home Assistant
|
|
type: http
|
|
url: https://www.home-assistant.io
|
|
interval: 30
|
|
alert: Discord Homelab
|
|
max_retries: 3
|
|
|
|
- name: Gitea
|
|
type: http
|
|
url: https://about.gitea.com
|
|
interval: 60
|
|
alert: Discord Homelab
|
|
check_ssl: true
|
|
expiry_threshold: 14
|
|
max_retries: 2
|
|
|
|
- name: Traefik Dashboard
|
|
type: http
|
|
url: https://traefik.io
|
|
interval: 60
|
|
alert: Discord Homelab
|
|
max_retries: 1
|
|
|
|
- name: Vaultwarden
|
|
type: http
|
|
url: https://bitwarden.com
|
|
interval: 30
|
|
alert: Discord Homelab
|
|
check_ssl: true
|
|
expiry_threshold: 14
|
|
max_retries: 3
|
|
|
|
- name: Personal Blog
|
|
type: http
|
|
url: https://jvns.ca
|
|
interval: 120
|
|
alert: Discord Homelab
|
|
check_ssl: true
|
|
expiry_threshold: 14
|
|
max_retries: 2
|
|
|
|
- name: Immich
|
|
type: http
|
|
url: https://immich.app
|
|
interval: 60
|
|
alert: Discord Homelab
|
|
check_ssl: true
|
|
expiry_threshold: 7
|
|
max_retries: 3
|
|
|
|
# HTTP — deliberate failure (non-resolving homelab host → stays DOWN)
|
|
- name: Auth Portal
|
|
type: http
|
|
url: https://auth.home.arpa
|
|
interval: 30
|
|
alert: Discord Homelab
|
|
max_retries: 2
|
|
|
|
# Push — cron jobs
|
|
- name: Nightly Backup
|
|
type: push
|
|
interval: 300
|
|
alert: Discord Homelab
|
|
|
|
- name: Cert Renewal
|
|
type: push
|
|
interval: 300
|
|
alert: Discord Homelab
|
|
|
|
# Infrastructure group
|
|
- name: Infrastructure
|
|
type: group
|
|
alert: Discord Homelab
|
|
monitors:
|
|
- name: Edge Router
|
|
type: ping
|
|
hostname: 8.8.8.8
|
|
interval: 30
|
|
alert: Discord Homelab
|
|
timeout: 5
|
|
|
|
- name: Postgres
|
|
type: port
|
|
hostname: localhost
|
|
port: 18099
|
|
interval: 60
|
|
alert: Discord Homelab
|
|
timeout: 5
|
|
|
|
- name: DNS Primary
|
|
type: dns
|
|
hostname: google.com
|
|
dns_server: 8.8.8.8
|
|
dns_resolve_type: A
|
|
interval: 60
|
|
alert: Discord Homelab
|
|
timeout: 5
|