Spusťte Blood Kings Monitoring
Nainstalujte centrální server na svůj PHP hosting a pak přidejte lehké agenty na stroje a routery, které chcete hlídat.
1. Instalace serveru
Server spouští kontroly, přijímá data od agentů, posílá upozornění a zobrazuje stavové stránky. Je to obyčejné PHP s databází MySQL: žádný obraz ke stažení a na hostingu se nic nesestavuje.
Změřená doba instalace: 1 min (od ZIPu vydání po první běh sběru dat na čistém serveru s PHP 8.2 a MySQL, podle tohoto návodu; nahrávání přes FTP a klikání v administraci hostingu jde navíc)
Ověřte, co hosting nabízí
- PHP 8.2 nebo novější s rozšířeními PDO MySQL, cURL, mbstring a OpenSSL
- Databáze MySQL nebo MariaDB
- Cron každou minutu (stačí Cron Jobs v cPanelu)
- Apache s .htaccess a mod_rewrite, jako na většině sdílených hostingů
- Jedna doména nebo subdoména, v jejímž kořeni leží /status i /app: aplikace mluví s /status na stejném hostu
- Odchozí HTTP a HTTPS z hostingu, pro kontroly
Umístěte ho mimo síť, kterou hlídáte. Server doma spadne s domácí linkou a pak už vám to nemá kdo říct.
Stáhněte a nahrajte
Poslední vydání: —
Rozbalte ho a nahrajte status/ do public_html/status/ a app/ do public_html/app/. Soubor app/.htaccess nevynechávejte: bez něj skončí obnovení stránky uvnitř aplikace chybou 404. Stažený soubor ověříte proti zveřejněnému kontrolnímu součtu tak, že SHA256SUMS uložíte vedle ZIPu a spustíte:
sha256sum -c SHA256SUMS --ignore-missingJeště žádné vydání? Sestavte obě složky ze zdrojů
S gitem a Node.js 22 na svém počítači:
git clone --recursive https://github.com/BKPepe/monitoring.git cd monitoring npm ci npm run build -w apps/monitor cp agents/vps-agent/agent.sh agents/vps-agent/agent.py agents/vps-agent/agent.ps1 \ agents/vps-agent/agent_openwrt.sh agents/vps-agent/docker-compose.agent.yml apps/status/Pak nahrajte apps/status/ (bez složky tests/) jako status/ a apps/monitor/dist/ (i s jeho .htaccess) jako app/. Agenti patří vedle agent_api.php: odtud se stahují a odtud se i sami aktualizují.
Založte prázdnou databázi
Založte databázi MySQL nebo MariaDB a uživatele se všemi právy k ní (v cPanelu: MySQL Databases) a poznamenejte si název, uživatele a heslo. Nechte ji prázdnou: tabulky založí instalátor. Jen když chcete všechno udělat ručně, naimportujte status/schema.sql sami:
mysql -u YOUR_DB_USER -p YOUR_DB_NAME < schema.sqlSpusťte instalátor
Otevřete https://YOUR-DOMAIN/app/setup. Zkontroluje PHP, vyzkouší přihlášení k databázi, zapíše status/config.php (nebo soubor ukáže k nahrání, když do složky PHP zapisovat nesmí), založí tabulky a pak prvního správce. Žádný výchozí účet ani heslo neexistuje a jakmile účet je, instalátor se znovu nespustí. Do té doby ho může spustit kdokoli, kdo adresu najde, proto databázi založte ještě před nahráním a instalátor spusťte hned po něm. Ručně místo toho: ve složce status/ zkopírujte config.sample.php na config.php a vyplňte připojení:
define('DB_HOST', 'localhost'); define('DB_PORT', 3306); define('DB_NAME', 'YOUR_DB_NAME'); define('DB_USER', 'YOUR_DB_USER'); define('DB_PASS', 'YOUR_DB_PASSWORD');Volitelné klíče patří do stejného souboru jako konstanty velkými písmeny, nebo později do aplikace v Nastavení: CRON_KEY, AGENT_REGISTRATION_TOKEN a METRICS_TOKEN. Instalátor dá každé nové instalaci vlastní CRON_KEY. Při ruční cestě zůstane prázdný, dokud ho nenastavíte, a dokud je prázdný, spustí sběr dat kdokoli, kdo zná adresu cron.php.
config.php obsahuje heslo k databázi. V ZIPu není a nahrání nového vydání ho nepřepíše.
Spouštějte sběr dat každou minutu
Všechny kontroly spouští jeden cron. Poslední krok instalátoru ukáže tenhle řádek se skutečnou cestou k PHP a k cron.php na vašem serveru. V cPanelu otevřete Cron Jobs, zvolte Once Per Minute (* * * * *) a příkaz vložte do pole Command. USER je váš účet na hostingu; domovskou složku ukazuje cPanel na hlavní stránce.
php -q /home/USER/public_html/status/cron.php >/dev/null 2>&1Bez cPanelu je to stejná úloha jako řádek pro crontab -e:
* * * * * php -q /home/USER/public_html/status/cron.php >/dev/null 2>&1Přihlaste se
Přihlaste se na https://YOUR-DOMAIN/app/ účtem, který založil instalátor. Po ruční cestě ten první účet místo toho založí /app/setup.
Ověřte, že běží
Instalátor na první běh sběru dat počká a po něm zezelená, do minuty od přidání cronu. Později, nebo po ruční cestě, to ověříte takhle (adresa se dá otevřít i v prohlížeči):
curl -s "https://YOUR-DOMAIN/status/api.php?action=collection_health"Hledejte čas v lastRunAt a "stale": false. "stale": true s lastRunAt null znamená, že sběr ještě nikdy neběžel: zkontrolujte řádek cronu a cestu v něm.
Dál: v aplikaci přidejte monitory a na stroje a routery, do kterých chcete vidět, agenty. Instalace agenta →
2. Agenti na strojích a routerech
Chcete-li vidět, co se děje uvnitř stroje (CPU, paměť, disky, síť) nebo na routeru (Wi-Fi, WAN, připojení klienti), nainstalujte na něj agenta.
Nejsnáz z vlastní aplikace: Infrastruktura → Přidat nový monitor → OpenWrt Router nebo VPS Agent a uložit. Dialog pak vypíše tytéž kroky s vaší adresou a klíčem monitoru. Níže je zastupují https://YOUR-DOMAIN a YOUR_AGENT_KEY.
Bash agent. Adresu serveru a svůj klíč čte z agent.cfg vedle skriptu a hlásí přes HTTPS; cron ho spouští každých 5 minut.
- Nejnovější verze
- —
- Potřebuje
- Bash, cron a wget; curl pro registraci tokenem. Práva roota pro /opt.
- Nejdřív si přečtěte skript
- agent.sh
Instalace
Stáhněte agenta
mkdir -p /opt/bk-agent && wget -O /opt/bk-agent/agent.sh https://YOUR-DOMAIN/status/agent.sh && chmod +x /opt/bk-agent/agent.shVytvořte konfiguraci s adresou serveru a klíčem
cat > /opt/bk-agent/agent.cfg <<'EOF' API_URL="https://YOUR-DOMAIN/status/agent_api.php" AGENT_KEY="YOUR_AGENT_KEY" AUTO_UPDATE="1" EOFSoubor musí ležet ve stejné složce jako skript.
Spusťte agenta ručně a zkontrolujte výpis
/opt/bk-agent/agent.sh --verboseZařaďte agenta do cronu, jednou za pět minut
( crontab -l 2>/dev/null || true; echo '*/5 * * * * /opt/bk-agent/agent.sh >/dev/null 2>&1' ) | crontab -
( crontab -l 2>/dev/null | grep -v /opt/bk-agent/agent.sh || true ) | crontab -
rm -rf /opt/bk-agentPak v přehledu smažte monitor agenta, aby jeho klíč přestal platit.
Skript v POSIX sh pro OpenWrt a Turris OS, bez bashe a Pythonu. Adresu serveru a svůj klíč čte z agent_openwrt.cfg vedle skriptu; cron ho spouští každou minutu a skript po běhu skončí.
- Nejnovější verze
- —
- Potřebuje
- OpenWrt nebo Turris OS s cronem a ubus; curl, uclient-fetch nebo wget. Volitelně iw (vytížení kanálu) a smartmontools (SMART).
- Nejdřív si přečtěte skript
- agent_openwrt.sh
Instalace
Stáhněte agenta
wget -O /usr/bin/agent_openwrt.sh https://YOUR-DOMAIN/status/agent_openwrt.sh && chmod +x /usr/bin/agent_openwrt.shKdyž wget neumí HTTPS, použijte uclient-fetch se stejnými parametry.
Vytvořte konfiguraci s adresou serveru a klíčem
cat > /usr/bin/agent_openwrt.cfg <<'EOF' API_URL="https://YOUR-DOMAIN/status/agent_api.php" AGENT_KEY="YOUR_AGENT_KEY" AUTO_UPDATE="1" EOFSoubor musí ležet ve stejné složce jako skript.
Spusťte agenta ručně a zkontrolujte výpis
/usr/bin/agent_openwrt.sh --verbosePrvní běh ještě nezná vytížení CPU, to agent změří až při dalším spuštění.
Zařaďte agenta do cronu, jednou za minutu
mkdir -p "${HOME:-/root}/.cache/crontab" && ( crontab -l 2>/dev/null | grep -v agent_openwrt.sh || true; echo '* * * * * /usr/bin/agent_openwrt.sh >/dev/null 2>&1' ) | crontab -Ověřte, že je agent naplánovaný a odesílá
crontab -l | grep agent_openwrt.sh && sleep 70 && logread | grep -i agent | tail -5První řádek musí vypsat plánovací záznam. Do minuty pak monitor v aplikaci přestane hlásit, že agent mlčí.
Volitelně: podpora Wi-Fi 6E u klientů
opkg update && opkg install hostapd-utilsBez tohoto balíčku agent nezjistí, kteří klienti umí 6 GHz.
( crontab -l 2>/dev/null | grep -v agent_openwrt.sh || true ) | crontab -
rm -f /usr/bin/agent_openwrt.sh /usr/bin/agent_openwrt.sh.* /usr/bin/agent_openwrt.cfg /usr/bin/agent_openwrt.loglines-off
rm -rf /var/run/status-agent-openwrt /tmp/status-agent-openwrt*Pak v přehledu smažte monitor agenta, aby jeho klíč přestal platit.
PowerShell agent. Nemá registrační příkaz: klíč agenta z přehledu uložte do agent.cfg a Plánovač úloh ho spouští každých 5 minut.
- Nejnovější verze
- —
- Potřebuje
- Windows PowerShell 5.1 nebo novější, spuštěný jako správce.
- Nejdřív si přečtěte skript
- agent.ps1
Instalace
Stáhněte agenta
New-Item -ItemType Directory -Force C:\bloodkings | Out-Null; Invoke-WebRequest -Uri "https://YOUR-DOMAIN/status/agent.ps1" -OutFile C:\bloodkings\agent.ps1Vytvořte konfiguraci s adresou serveru a klíčem
Set-Content -Path C:\bloodkings\agent.cfg -Value @('API_URL="https://YOUR-DOMAIN/status/agent_api.php"', 'AGENT_KEY="YOUR_AGENT_KEY"', 'AUTO_UPDATE="1"')Soubor musí ležet ve stejné složce jako skript.
Spusťte agenta ručně a zkontrolujte výpis
powershell.exe -ExecutionPolicy Bypass -File C:\bloodkings\agent.ps1 -VerboseNaplánujte spouštění každých pět minut (PowerShell jako správce)
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument '-ExecutionPolicy Bypass -File "C:\bloodkings\agent.ps1"' $trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 5) -RepetitionDuration (New-TimeSpan -Days 3650) Register-ScheduledTask -TaskName "BloodKingsAgent" -Action $action -Trigger $trigger -User "SYSTEM" -RunLevel Highest
Unregister-ScheduledTask -TaskName "BloodKingsAgent" -Confirm:$false
Remove-Item -Recurse -Force C:\bloodkingsPak v přehledu smažte monitor agenta, aby jeho klíč přestal platit.
Python agent v kontejneru python:3-alpine. Doplňte klíč agenta z přehledu.
- Nejnovější verze
- —
- Potřebuje
- Docker s pluginem compose. Kontejner používá pid: host a network_mode: host a připojí / jen pro čtení, takže hlásí hostitele, ne sebe.
- Nejdřív si přečtěte skript
- agent.pydocker-compose.agent.yml
Instalace
Stáhněte agenta
mkdir -p /opt/bk-agent && cd /opt/bk-agent && wget -O agent.py https://YOUR-DOMAIN/status/agent.py && wget -O docker-compose.agent.yml https://YOUR-DOMAIN/status/docker-compose.agent.ymlDoplňte adresu serveru a klíč do docker-compose.agent.yml
sed -i 's|STATUS_API_URL: .*|STATUS_API_URL: "https://YOUR-DOMAIN/status/agent_api.php"|; s|STATUS_AGENT_KEY: .*|STATUS_AGENT_KEY: "YOUR_AGENT_KEY"|' docker-compose.agent.ymlSpusťte kontejner
docker compose -f docker-compose.agent.yml up -dZkontrolujte výpis kontejneru
docker compose -f docker-compose.agent.yml logs -f
cd /opt/bk-agent && docker compose -f docker-compose.agent.yml down
rm -rf /opt/bk-agentPak v přehledu smažte monitor agenta, aby jeho klíč přestal platit.
Stejný Bash agent jako na Linuxu.
- Nejnovější verze
- —
- Potřebuje
- Raspberry Pi OS (ARMv7 nebo ARM64) s cronem a wget; curl pro registraci tokenem.
- Nejdřív si přečtěte skript
- agent.sh
Instalace
Stáhněte agenta
mkdir -p /opt/bk-agent && wget -O /opt/bk-agent/agent.sh https://YOUR-DOMAIN/status/agent.sh && chmod +x /opt/bk-agent/agent.shVytvořte konfiguraci s adresou serveru a klíčem
cat > /opt/bk-agent/agent.cfg <<'EOF' API_URL="https://YOUR-DOMAIN/status/agent_api.php" AGENT_KEY="YOUR_AGENT_KEY" AUTO_UPDATE="1" EOFSoubor musí ležet ve stejné složce jako skript.
Spusťte agenta ručně a zkontrolujte výpis
/opt/bk-agent/agent.sh --verboseZařaďte agenta do cronu, jednou za pět minut
( crontab -l 2>/dev/null || true; echo '*/5 * * * * /opt/bk-agent/agent.sh >/dev/null 2>&1' ) | crontab -
( crontab -l 2>/dev/null | grep -v /opt/bk-agent/agent.sh || true ) | crontab -
rm -rf /opt/bk-agentPak v přehledu smažte monitor agenta, aby jeho klíč přestal platit.
Víc strojů: registrace tokenem
Agent pro Bash a pro OpenWrt si umí monitor založit sám. Stáhněte skript (první krok na jeho kartě) a místo zápisu konfigurace spusťte řádek níže: server odpoví novým klíčem a agent ho uloží do agent.cfg (na routeru agent_openwrt.cfg) vedle skriptu. Pak pokračujte ručním spuštěním a cronem. Oba argumenty jsou poziční; bez adresy se agent registruje proti výchozímu localhost.
/opt/bk-agent/agent.sh --register YOUR_REGISTRATION_TOKEN https://YOUR-DOMAIN/status/agent_api.php/usr/bin/agent_openwrt.sh --register YOUR_REGISTRATION_TOKEN https://YOUR-DOMAIN/status/agent_api.phpToken je v aplikaci v Nastavení → Token pro auto-registraci agentů. Dokud je prázdný, server místo něj přijme klíč cronu (CRON_KEY), takže kdo má klíč cronu, může přidávat monitory. Agenti pro Python, PowerShell a Docker registrační příkaz nemají.
Agent se v aplikaci neukáže
Pro každou platformu tři kontroly v tomto pořadí: je agent naplánovaný, co vypíše jeden ruční běh a co je na konci jeho logu.
crontab -l | grep agent.sh
/opt/bk-agent/agent.sh --verbose
tail -n 50 /opt/bk-agent/agent.logcrontab -l | grep agent_openwrt.sh
/usr/bin/agent_openwrt.sh --verbose
tail -n 50 /tmp/status-agent-openwrt.log; logread | grep -i agent | tail -n 20Get-ScheduledTask -TaskName "BloodKingsAgent"
powershell.exe -ExecutionPolicy Bypass -File C:\bloodkings\agent.ps1 -Verbose
Get-Content C:\bloodkings\agent.log -Tail 50cd /opt/bk-agent && docker compose -f docker-compose.agent.yml logs --tail 50Server označí monitor agenta za nedostupný po 50 minutách bez hlášení. Limit je v Nastavení → Časový limit pro označení agenta za offline (minuty); 0 kontrolu vypne.
Chcete přispět k vývoji?
Projekt Blood Kings Monitoring je open source pod licencí MIT. Přibalený PHPMailer (odesílání e-mailů) má vlastní licenci LGPL-2.1, viz THIRD_PARTY_NOTICES.md. Zdrojové kódy, dokumentaci a tracker chyb naleznete na našem GitHubu.