Rychlý start
Tento průvodce vám pomůže zprovoznit kompletní monitorovací systém během několika minut.
Krok 1: Spuštění Serveru
Centrální server Blood Kings se nejjednodušeji spouští pomocí Docker Compose. Vytvořte si prázdnou složku a vložte do ní následující konfiguraci:
# docker-compose.yml
version: '3.8'
services:
bloodkings:
image: bkpepe/monitoring:latest
ports:
- "8080:80"
volumes:
- ./data:/var/www/html/data
restart: alwaysSpusťte server příkazem:
docker compose up -dPo dokončení stahování otevřete prohlížeč na adrese http://localhost:8080 a postupujte podle pokynů na obrazovce k vytvoření administrátorského účtu.
Krok 2: Přidání nového monitoru
Po přihlášení do administrace přejděte na záložku Monitors a klikněte na Add Monitor. Můžete přidat standardní HTTPS kontroly, ping na IP adresy, kontroly SSL certifikátů nebo heartbeat pro úlohy, které se hlásí samy.
Systémové požadavky
Blood Kings Monitoring je navržen tak, aby běžel na jakémkoliv hardwaru.
Centrální Server:
- Procesor: 1 vCPU (x86_64 nebo ARM64)
- Operační paměť: 128 MB RAM (doporučeno 256 MB)
- Místo na disku: 50 MB pro aplikaci + místo pro historii databází (cca 100 MB na rok běžného provozu)
- Software: Docker & Docker Compose nebo PHP 8.2+ s webovým serverem (Apache/Nginx) a MySQL databází
Vzdálený Agent:
- OS: Linux (libovolná distribuce s Bash a Curl), Windows 10/11/Server, macOS, Raspberry Pi OS
- Paměť: méně než 10 MB RAM
- Síť: Odchozí HTTPS (port 443) přístup k centrálnímu serveru
Architektura systému
Blood Kings Monitoring využívá hybridní architekturu spojující aktivní piny a pasivní agenty.
Pasivní monitoring (Agenti): Agenti běží na vašich cílových strojích. V pravidelných intervalech (např. 60 sekund) shromažďují lokální data (CPU, RAM, disky) a zasílají je pomocí HTTPS POST požadavků na centrální server. Tento přístup nevyžaduje otevírání žádných příchozích portů na monitorovaných serverech.
Aktivní monitoring (Pinger): Centrální server spouští cron skripty, které provádějí HTTP/HTTPS, TCP a ICMP ping požadavky na vámi zadané vzdálené cíle.
Konfigurace Databáze Serveru
Blood Kings Monitoring se připojuje k MySQL nebo MariaDB databázi pomocí PDO. Údaje nastavte v souboru status/config.php:
define('DB_HOST', '127.0.0.1');
define('DB_NAME', 'bloodkings_status');
define('DB_USER', 'bloodkings_user');
define('DB_PASS', 'VaseSilneHeslo123!');
define('TIMEZONE', 'Europe/Prague');Proměnné Prostředí a Tokeny
Klíčové bezpečnostní tokeny se definují přímo v config.php nebo v prostředí serveru:
cron_key: Tajný klíč pro autorizaci spouštěnícron.phpz externích služeb a webhooků.agent_registration_token: Sdílené heslo autorizující automatickou auto-registraci nově nainstalovaných agentů.metrics_token: Bearer token chránící Prometheus endpointmetrics.php.
Veřejné Status Stránky a Branding
Vzhled veřejných status stránek upravíte v Administraci (Nastavení -> Branding). Můžete nahrát vlastní logo, nastavit barvy a konfiguraci 24h / 7d / 30d SLA agregační souborové cache.
Heartbeat monitory
Aktivní kontrola umí jen to, na co dosáhne ze sítě. Záloha, která se spustí ve tři ráno a tiše selže, je pro ni neviditelná - není co pingnout. Heartbeat obrací směr: úloha se hlásí sama a monitor spadne ve chvíli, kdy se neozve.
Založte monitor typu Heartbeat, nastavte, jak často se má úloha ozvat, a na její konec přidejte adresu, kterou dostanete:
curl -fsS -m 10 "https://vas-server/status/heartbeat.php?token=VAS_TOKEN"Když úloha selže, ať to řekne rovnou - monitor pak spadne hned, ne až po vypršení intervalu:
curl -fsS -m 10 "https://vas-server/status/heartbeat.php?token=VAS_TOKEN&status=fail&msg=tar%20skoncil%20kodem%202"Monitor, který ještě nikdy nedostal signál, hlásí neznámý stav, ne výpadek. Nic neselhalo - jen o něm zatím nic nevíme, a upozornění na výpadek, který se nestal, je svého druhu lež.
Token je jediné, co endpoint autorizuje. Nepouštějte ho do sdílených logů: kdo ho má, může se hlásit za vás a monitor bude svítit zeleně, i když záloha dávno neběží.
Hlídač: kdo hlídá sběr dat
Všechno sbírá jediná cron úloha. Když umře, aplikace se nerozbije - dál zobrazuje poslední známé stavy a vypadá naprosto zdravě. Ze všech způsobů, jak může monitoring selhat, je tenhle nejhorší, protože o sobě nedá vědět.
Server proto zaznamenává každý dokončený běh a vystavuje ho:
curl -s "https://vas-server/status/api.php?action=collection_health"Odpověď má stale: true, jakmile je poslední běh starší než nastavený limit - a také tehdy, když cron neběžel ještě ani jednou, protože „žádná data" není totéž co „vše v pořádku".
Ten endpoint kontroluje Cloudflare Worker každých pět minut. Běží mimo hlídaný server záměrně: hlídač na stejném stroji umře spolu s tím, co hlídá. Stačí mu jednou nastavit Discord webhook a ozve se sám:
cd apps/worker && npx wrangler secret put WATCHDOG_DISCORD_WEBHOOKBez toho hlídač kontroluje dál, ale umí jen logovat - a přizná to na /api/watchdog, místo aby jen budil dojem, že něco hlídá.
Instalace a Registrace Agenta
Agenti jsou samostné telemetrické skripty dostupné pro Linux (Bash), Python, PowerShell a OpenWrt routery. Auto-registraci spustíte s tokenem serveru:
./agent.sh --register --token="VásRegistračníToken" --url="https://monitoring.bloodkings.eu/status/agent_api.php"Intervaly Agenta a Vzdálené Akce
Agent spouští měření v nastavitelném intervalu (výchozí: 60 sekund). Na OpenWrt routerech lze zapnout opt-in HMAC podepsané Vzdálené akce nastavením REMOTE_ACTIONS_ENABLED=1 v konfiguraci agenta.
Řešení Problémů s Agenty
Pokud agent přestane hlásit data, zkontrolujte odchozí přístup na port 443 a nahlédněte do logů:
# Kontrola logů systemd služby agenta
journalctl -u bloodkings-agent -n 50 --no-pager