Files
threadnet-operating/monitoring/prometheus/gameserver-rules.yml
T
Thore Cimbal a07c6eda09 monitoring: Game-Host-Anbindung nach der Gegen-Uebergabe fertigstellen
Die Host-Seite ist deployt und verifiziert; der Betreiber hat drei Abweichungen
zu ba59518 gemeldet, alle uebernommen:

1. pterodactyl_exporter zeigt auf 9810 statt 9531. Der alte Exporter (loens2)
   hat NIE funktioniert - er rief die Client-API mit einem Application-Key ueber
   http auf und lieferte null pterodactyl_*-Metriken. Ersetzt durch einen, der
   die Panel-MariaDB read-only liest und keinen API-Key braucht.

2. metric_relabel_configs sind hinzugekommen. Sie lebten bisher im lokalen
   Prometheus des Game-Hosts und gehoeren immer dem SCRAPENDEN Prometheus - mit
   dessen Rueckbau also hierher. Ohne sie waeren Gameserver nur unter ihrer UUID
   sichtbar und je Serie rund 20 container_label_* uebrig geblieben; erwartete
   Serienzahl faellt von 3615 auf ~1700.

3. instance = gameserver statt pterodactyl, damit Metrik und Log denselben
   Schluessel tragen (promtail setzt host=gameserver). Kostet keine Historie -
   die Targets sind am 2026-08-20 zum ersten Mal ueberhaupt up gegangen.

Neu: gameserver-rules.yml nimmt den Join Container-UUID -> Klarname vorweg.
cAdvisor kennt Gameserver nur unter ihrer UUID, und Relabeling kann keine
zweite Metrik nachschlagen.

Mit promtool gegen die hier tatsaechlich laufende Version 3.3.1 geprueft (die
Uebergabe nutzte 3.0.0): Konfiguration gueltig, 2 Regeldateien, 5 Regeln.

⚠️ Die Uebergabe nennt --force-recreate wegen der Inode-Falle (#0083). Fuer
Prometheus gilt das hier NICHT mehr: Das Verzeichnis wird gemountet
(./prometheus:/etc/prometheus), genau um diese Falle zu beseitigen. Ein
restart bzw. SIGHUP genuegt.
2026-08-20 12:00:00 +00:00

53 lines
2.3 KiB
YAML

# Recording Rules fuer den Game-Host (management #0002).
#
# Materialisiert die Verknuepfung Container-UUID -> Klarname. cAdvisor kennt
# Gameserver nur unter ihrer UUID, weil Wings die Container so benennt und kein
# Namens-Label setzt. Relabeling kann das nicht aufloesen - es kann keine zweite
# Metrik nachschlagen. Diese Regeln schreiben deshalb alle 30 s Serien fort, die
# den Klarnamen bereits mitbringen, damit ihn nicht jedes Panel neu joinen muss.
#
# label_replace setzt zusaetzlich "display" auf den Klarnamen. Damit bedeutet
# display in JEDER Quelle dasselbe - in Loki, in den cAdvisor-Serien und hier:
# der Name, den Menschen lesen sollen.
#
# Uebernommen aus der Uebergabe des Game-Host-Betreibers vom 2026-08-20; dort
# gegen Prometheus 3.0.0 mit `promtool check rules` geprueft.
groups:
- name: gameserver
interval: 30s
rules:
- record: gameserver:cpu_cores
expr: |
label_replace(
sum by (uuid) (rate(container_cpu_usage_seconds_total{uuid!=""}[2m]))
* on (uuid) group_left(server_name, game) pterodactyl_server_info,
"display", "$1", "server_name", "(.*)")
- record: gameserver:memory_working_set_bytes
expr: |
label_replace(
sum by (uuid) (container_memory_working_set_bytes{uuid!=""})
* on (uuid) group_left(server_name, game) pterodactyl_server_info,
"display", "$1", "server_name", "(.*)")
- record: gameserver:memory_limit_bytes
expr: |
label_replace(
max by (uuid) (container_spec_memory_limit_bytes{uuid!=""} > 0)
* on (uuid) group_left(server_name, game) pterodactyl_server_info,
"display", "$1", "server_name", "(.*)")
- record: gameserver:network_receive_bytes_per_second
expr: |
label_replace(
sum by (uuid) (rate(container_network_receive_bytes_total{uuid!=""}[2m]))
* on (uuid) group_left(server_name, game) pterodactyl_server_info,
"display", "$1", "server_name", "(.*)")
- record: gameserver:network_transmit_bytes_per_second
expr: |
label_replace(
sum by (uuid) (rate(container_network_transmit_bytes_total{uuid!=""}[2m]))
* on (uuid) group_left(server_name, game) pterodactyl_server_info,
"display", "$1", "server_name", "(.*)")