Infrastructure Monitoring & Alerting Plan
Executive Summary
This document establishes the architecture, service inventory, and phased rollout plan for comprehensive telemetry, uptime monitoring, and alerting across the self-hosted infrastructure (ul.drheck.dev) and external nodes (rng.drheck.dev).
1. Current Infrastructure Inventory
Primary Host (ul.drheck.dev)
/) with extensive storage pools mounted under /data.
Edge Proxy: Nginx reverse proxy with SSL termination and domain routing for *.drheck.dev.
Multi-Container Docker Compose Stacks (/data/docker/):
docker-data@ / /home/docker-data/.config/containers/systemd/):
mc-manager + minecraft@*), Transmission-daemon, CrowdSec, Kanji.
External VPS (rng.drheck.dev)
/home storage mount).
Role: Off-site canary sentinel, external HTTP/SSL prober, and out-of-band alert dispatcher.
2. Monitoring Architecture & Topology
┌───────────────────────────────────────────┐
│ Off-Site VPS (rng.drheck.dev) │
│ - Uptime Kuma (Blackbox & SSL Prober) │
│ - External WAN/DNS/Port Health Probes │
│ - Independent Alert Routing (ntfy/Pushover)│
└─────────────────────┬─────────────────────┘
│ Probes *.drheck.dev (HTTPS/IPv6/IPv4)
▼
┌────────────────────────────────────────────────────────────────────────────────────────┐
│ Primary Host (ul.drheck.dev) │
│ │
│ [ Telemetry Exporters ] │
│ ├── node_exporter (Host CPU, RAM, NVMe I/O, Network, Systemd) │
│ ├── cAdvisor (Per-container CPU, Memory, Network, Restart Loops) │
│ ├── nginx-prometheus (Request rates, 4xx/5xx error spikes, upstream latencies) │
│ ├── postgres_exporter (DB connections, query latency, lock monitoring) │
│ └── smartctl_exporter (NVMe wear, drive temperatures, hardware health) │
│ │
│ [ Time-Series Storage & Dashboards ] │
│ ├── VictoriaMetrics (High-efficiency TSDB, low memory footprint, PromQL) │
│ └── Grafana (Unified dashboards & visual panels) │
│ │
│ [ Alert Engine ] │
│ └── Alertmanager (Routes internal metrics -> Telegram / ntfy / Matrix) │
└────────────────────────────────────────────────────────────────────────────────────────┘
3. Core Component Roles
A. External Canary (Uptime Kuma on rng)
rng: Because rng is outside the local network, it accurately detects external DNS, IPv6 routing, and gateway failures that local monitors cannot detect.
Configuration: Probes all public subdomains (wiki.drheck.dev, auth.drheck.dev, immich.drheck.dev, cloud.drheck.dev, etc.) on 60-second intervals.
B. Host & Container Telemetry (VictoriaMetrics + cAdvisor + Exporters on ul)
eth77), and disk utilization across mounts.
C. Unified Visualization (Grafana on ul)
4. Phased Rollout Plan
Phase 1: External Sentinel (rng.drheck.dev)
/home/luke/docker/uptime-kuma on rng using Docker or rootless Podman.
Configure HTTP(s), TCP, and SSL certificate monitors for all public services on drheck.dev.
Configure notification webhooks (e.g. ntfy.sh, Telegram, or Gotify) for instant push alerts to mobile devices.
Phase 2: Exporter Deployment (ul.drheck.dev)
node_exporter as a native systemd unit or container (listening on 127.0.0.1:9100).
Deploy cAdvisor in Docker (/data/docker/cadvisor/compose.yaml) with read-only mounts to /var/run/docker.sock, /sys, and /var/lib/docker.
Add smartctl_exporter for continuous NVMe drive telemetry.
Phase 3: Time-Series DB & Grafana Stack (ul.drheck.dev)
/data/docker/monitoring/compose.yaml with:
victoriametrics (TSDB storage)
grafana (Dashboard UI)
vmagent or Prometheus scraping configuration
Configure scrape jobs for node_exporter, cAdvisor, Nginx metrics, and database exporters.
Expose Grafana behind Nginx at monitor.drheck.dev (secured with Authentik SSO).
Phase 4: Alert Rules & Thresholds
Define critical alert rules in VictoriaMetrics / Alertmanager:
/ or any /data mount.
Service Outage: Any service unreachable for > 2 probe cycles (120s).
Container Crashes: Container restart count > 3 in a 10-minute window.
Host Resource Saturation: RAM available < 10% or continuous high load average.
SSL Certificates: Alert if certificate validity < 14 days remaining.