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.
53 lines
2.3 KiB
YAML
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", "(.*)")
|