Monitoring herních serverů – Uptime Kuma, Prometheus a Grafana
Jak hlídat dostupnost a výkon herních serverů. Uptime Kuma s GameDig, metriky nodu a kontejnerů v Prometheu, Grafana, Minecraft query a upozornění.
Hráči vám dají vědět, že server spadl – ale až když už je pozdě. Monitoring herních serverů má dvě vrstvy: dostupnost (běží server a dá se na něj připojit?) a výkon (stíhá CPU, nedochází RAM nebo disk?). Pro obojí existují bezplatné nástroje, které rozjedete za odpoledne.
Co sledovat
| Metrika | Proč |
|---|---|
| Dostupnost herního portu | server mohl spadnout nebo zamrznout |
| Počet hráčů | trend návštěvnosti, detekce „prázdného“ serveru po pádu |
| CPU nodu a jednotlivých serverů | herní servery často zatěžují jedno jádro na 100 % |
| RAM a swap | při vyčerpání přichází OOM killer |
| Volné místo na disku | zálohy a logy umí disk zaplnit nečekaně rychle |
| TPS/MSPT (Minecraft) | skutečná „plynulost“ hry |
| Stav Wings/Panelu | bez nich nefunguje správa |
Vrstva 1: dostupnost s Uptime Kuma
Uptime Kuma je jednoduchý self-hosted nástroj pro monitoring dostupnosti s webovým rozhraním. Ideálně ho provozujte na jiném stroji než herní servery – jinak při výpadku nodu nemá kdo poslat upozornění.
docker run -d --restart=unless-stopped -p 3001:3001 \
-v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
Rozhraní poběží na portu 3001. Užitečné typy monitorů:
- GameDig – dotazuje herní server protokolem dané hry (Minecraft, Valheim, Rust, FiveM a mnoho dalších), takže pozná i to, že port je otevřený, ale hra neodpovídá.
- TCP Port – jednoduchá kontrola otevřeného TCP portu (Minecraft Java, Wings 8080, SFTP 2022).
- HTTP(s) – dostupnost Panelu a platnost SSL certifikátu.
- Push – služba sama volá URL; když volání přestanou chodit, Kuma ohlásí výpadek. Hodí se pro Discord boty nebo cron zálohy.
Upozornění Kuma posílá do Discordu (webhook), Telegramu, e-mailem a dalšími kanály. Pro Discord vytvořte v kanálu webhook (Nastavení kanálu → Integrace → Webhooky) a URL vložte do Kumy.
Uptime Kuma umí z monitorů vytvořit i veřejnou status stránku, kterou můžete sdílet hráčům.
Minecraft: query a mc-monitor
Aby šlo o serveru zjistit víc než „port je otevřený“, zapněte v server.properties query:
enable-query=true
query.port=25565
Query běží na UDP. Pokud je za firewallem, povolte UDP port. Základní informace (MOTD, počet hráčů, verze) poskytuje i běžný Server List Ping přes TCP, který používá i klient – pro většinu monitoringu stačí.
Rychlá kontrola z příkazové řádky nástrojem mc-monitor (projekt itzg):
docker run --rm itzg/mc-monitor status --host mc.example.cz --port 25565
Vrstva 2: metriky s Prometheem a Grafanou
Pro grafy a historii výkonu je standardem Prometheus (sběr metrik) a Grafana (vizualizace).
node_exporter – metriky celého nodu (CPU, RAM, disk, síť):
sudo apt install prometheus-node-exporter
curl -s localhost:9100/metrics | head
cAdvisor – metriky jednotlivých Docker kontejnerů, tedy jednotlivých herních serverů v Pterodactylu:
docker run -d --name cadvisor --restart=unless-stopped \
-p 127.0.0.1:8081:8080 \
-v /:/rootfs:ro -v /var/run:/var/run:ro -v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
gcr.io/cadvisor/cadvisor:v0.49.1
Port 8080 na nodu obsazuje Wings, proto je cAdvisor v příkladu na 8081. Verzi image zkontrolujte v repozitáři projektu.
Konfigurace Promethea (prometheus.yml) na monitorovacím stroji:
scrape_configs:
- job_name: node
static_configs:
- targets: ['10.0.0.5:9100']
- job_name: cadvisor
static_configs:
- targets: ['10.0.0.5:8081']
Exportery nevystavujte do internetu. Buď je dejte na privátní síť mezi stroji, nebo povolte port ve firewallu jen pro IP Promethea. V příkladu výše cAdvisor naslouchá jen na localhostu – pro vzdálený sběr změňte bind na privátní IP.
Kontejnery Pterodactylu jsou pojmenované podle UUID serveru, takže v Grafaně je snadno přiřadíte ke konkrétnímu serveru. Pro Grafanu existují hotové dashboardy pro node_exporter i cAdvisor, které importujete podle ID z grafana.com.
Metriky přímo z Minecraftu
Pro TPS, MSPT, počet entit a chunků existují pluginy, které vystavují metriky ve formátu Promethea (například UnifiedMetrics nebo Prometheus exporter pluginy pro Paper). Před instalací ověřte podporu vaší verze serveru.
Pro jednorázovou diagnostiku stačí spark (/spark tps, /spark health), viz Optimalizace Paper serveru.
Upozornění, která dávají smysl
Příliš mnoho upozornění vede k tomu, že je přestanete číst. Začněte s několika:
- herní server neodpovídá déle než 2–3 minuty,
- volné místo na disku pod 10 %,
- RAM nodu nad 90 % po dobu 10 minut,
- Panel nebo Wings nedostupné,
- SSL certifikát vyprší do 14 dnů.
V Prometheu se upozornění píšou jako pravidla, například pro disk:
groups:
- name: node
rules:
- alert: MaloMistaNaDisku
expr: node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} < 0.10
for: 10m
annotations:
summary: "Na {{ $labels.instance }} dochází místo na disku"
Odesílání řeší Alertmanager nebo přímo upozornění v Grafaně.
Minimální sestava pro začátek
- Uptime Kuma na malém samostatném VPS s GameDig monitory a Discord webhookem.
- node_exporter na každém nodu.
- Prometheus + Grafana, jakmile chcete historii a grafy.
Dotazy v PromQL a pravidla upozornění je praktické ladit s ColdHost AI – popište, co chcete hlídat, a nechte si navrhnout výraz i práh.