Files
ServerPulse/README.md
2026-06-15 05:15:19 +00:00

249 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ServerPulse
Monitoring- und Analytics-Plugin für Minecraft-Netzwerke mit Unified-JAR-Ansatz.
Eine Datei, zwei Laufzeiten:
- Spigot/Paper-Plugin auf den Game-Servern
- BungeeCord-Plugin auf dem Proxy
ServerPulse erfasst Performance- und Entity-Daten, erkennt Grenzwertverletzungen, kann Alerts an Discord senden und stellt optional REST-Endpunkte für Grafana/Prometheus/Influx bereit.
## Features
- Live-Monitoring für TPS, MSPT, RAM, Chunks und Spieler
- Entity-Analyse pro Welt
- Schwellwertbasierte Warnungen (Warning/Critical)
- Trend-Analyse fuer Lastentwicklungen
- Notfallaktionen (Item-Clear, Mob-Clear, Auto-Diagnose)
- Discord-Integration für Alerts und tägliche Reports
- Netzwerk-Übersicht auf BungeeCord
- REST API für Metrik-Export (Prometheus, Simple JSON, Influx, JSON)
- Plugin Messaging zwischen Spigot und Bungee über `serverpulse:data`
## Voraussetzungen
- Java 17
- Spigot/Paper 1.21+
- BungeeCord (optional, für Netzwerkmodus)
Optional:
- MySQL/MariaDB (wenn Datenbank aktiv genutzt wird)
- Discord Webhook (wenn Discord-Alerts/Reports genutzt werden)
- Grafana/Prometheus/InfluxDB (wenn REST/API-Export genutzt wird)
## Installation (ohne Build)
Da die JAR von dir bereitgestellt wird, ist kein Build-Schritt nötig.
### 1) Spigot/Paper (Standalone oder Netzwerk-Server)
1. Lege die JAR in den Ordner `plugins/` deines Spigot/Paper-Servers.
2. Starte den Server einmal, damit die `config.yml` erzeugt wird.
3. Passe die Konfiguration an.
4. Führe `/serverpulse reload` aus oder starte den Server neu.
### 2) BungeeCord (Proxy)
1. Lege dieselbe JAR in den `plugins/`-Ordner des BungeeCord-Proxys.
2. Starte den Proxy einmal, damit die `config.yml` erzeugt wird.
3. Aktiviere bei Bedarf `rest-api` und `discord`.
4. Starte den Proxy neu oder nutze `/bpulse reload`.
### 3) Netzwerkbetrieb (Spigot + Bungee)
- Installiere die JAR auf Proxy und allen relevanten Sub-Servern.
- Stelle sicher, dass mindestens ein Spieler online ist, damit Plugin-Messages von Spigot zum Proxy gesendet werden können.
- Der genutzte Channel ist `serverpulse:data`.
## Schnellstart
Empfohlene Reihenfolge:
1. In `config.yml` `general.debug: true` setzen (nur für Initialtest).
2. Optional Datenbank aktivieren und Zugangsdaten setzen.
3. Optional Discord aktivieren und Webhook eintragen.
4. Optional `rest-api.enabled: true` auf dem Bungee-Proxy setzen.
5. Plugin neu laden.
6. Mit Befehlen prüfen:
- Spigot: `/serverpulse status`
- Bungee: `/bpulse status`
## Konfiguration
Die zentrale Datei ist `config.yml`.
Je nach Laufzeit (Spigot oder Bungee) werden die passenden Abschnitte genutzt.
### Wichtige Bereiche
- `general`: Debug, Intervalle, Retention
- `database`: MySQL-Settings (nur Spigot)
- `discord`: Alerts/Reports für beide Seiten
- `thresholds`: Grenzwerte fuer Performance/Entities/Netzlast
- `worlds`: Welt-spezifische Overrides (Spigot)
- `trend-analysis`: Lasttrend-Erkennung (Spigot)
- `emergency-actions`: automatische Gegenmaßnahmen (Spigot)
- `chat-monitoring`: Muster- und Spam-Erkennung (Bungee)
- `rest-api`: API und Exportformate (Bungee)
- `messages`: Prefix und Textausgaben (Spigot)
### Beispiel: Datenbank aktivieren
```yml
database:
enabled: true
host: "localhost"
port: 3306
database: "serverpulse"
username: "root"
password: "change-me"
```
### Beispiel: Discord aktivieren
```yml
discord:
enabled: true
webhook-url: "https://discord.com/api/webhooks/..."
report-webhook-url: ""
bot-name: "ServerPulse"
daily-report:
enabled: true
time: "08:00"
```
### Beispiel: REST API aktivieren (Bungee)
```yml
rest-api:
enabled: true
host: "0.0.0.0"
port: 8081
api-key: "CHANGE_ME"
formats:
prometheus:
enabled: true
endpoint: "/metrics"
simple-json:
enabled: true
endpoint: "/grafana"
influxdb:
enabled: true
endpoint: "/influx"
json:
enabled: true
endpoint: "/api"
```
## Befehle
### Spigot/Paper
Hauptbefehl: `/serverpulse`
Alias: `/pulse`
Subcommands:
- `/serverpulse status` - Aktueller Performance-Status
- `/serverpulse report` - Manueller Monitoring-Report
- `/serverpulse world <welt>` - Detailansicht einer Welt
- `/serverpulse entities [welt]` - Entity-Übersicht
- `/serverpulse reload` - Konfiguration neu laden
- `/serverpulse debug` - Debug- und Laufzeitinfos
- `/serverpulse clear <items|mobs> [welt]` - Notfallbereinigung
### BungeeCord
Hauptbefehl: `/bpulse`
Aliase: `/bsp`, `/networkpulse`
Subcommands:
- `/bpulse status` - Netzwerk-Schnellstatus
- `/bpulse network` - Netzwerk-Statistik
- `/bpulse servers` - Detailansicht aller Sub-Server
- `/bpulse report` - Daily Report sofort an Discord senden
- `/bpulse reload` - Bungee-Konfiguration neu laden
## Permissions
### Spigot/Paper
- `serverpulse.use`
- `serverpulse.admin`
- `serverpulse.status`
- `serverpulse.report`
- `serverpulse.world`
- `serverpulse.entities`
- `serverpulse.reload`
- `serverpulse.debug`
Hinweis: Für `clear` wird in der aktuellen Implementierung `serverpulse.admin` geprüft.
### BungeeCord
- `serverpulse.bungee.use`
- `serverpulse.bungee.admin` (für `/bpulse reload`)
## REST API Endpunkte (Bungee)
Bei aktiviertem REST-Server sind standardmäßig folgende Endpunkte vorgesehen:
- Prometheus: `/metrics`
- Grafana Simple JSON: `/grafana`
- Influx-Format: `/influx`
- JSON API: `/api`
Host, Port, API-Key und Endpunkte sind in `rest-api` konfigurierbar.
## Betriebsmodi
- Standalone (nur Spigot/Paper): Lokales Monitoring auf einem Server
- Netzwerkmodus (Spigot + Bungee): Aggregation und zentrale Sicht auf Proxy-Ebene
## Troubleshooting
### Keine Daten auf Bungee sichtbar
- Prüfen, ob die JAR auch auf den Spigot-Servern installiert ist.
- Prüfen, ob Spieler online sind (Plugin Messaging benötigt initial einen Spieler-Context).
- Prüfen, ob keine Firewall den Proxy-Port für REST blockiert (falls REST genutzt wird).
- `general.debug: true` aktivieren und Logs auf beiden Seiten prüfen.
### Datenbankverbindung fehlgeschlagen
- Zugangsdaten in `database` prüfen.
- Erreichbarkeit und Port der DB prüfen.
- Sicherstellen, dass der DB-User Rechte auf die angegebene Datenbank hat.
### Discord sendet keine Nachrichten
- `discord.enabled: true` gesetzt?
- Webhook-URL korrekt?
- Netzwerkzugriff vom Server auf Discord vorhanden?
### REST API nicht erreichbar
- `rest-api.enabled: true` auf Bungee gesetzt?
- Host/Port korrekt und frei?
- Firewall/Sicherheitsgruppe prüfen.
## Projektstruktur (Kurzüberblick)
- Spigot Einstieg: `de.serverpulse.spigot.SpigotPlugin`
- Bungee Einstieg: `de.serverpulse.bungee.BungeePlugin`
- Gemeinsamer Messaging-Channel: `de.serverpulse.network.NetworkMessage`
- Ressourcen: `plugin.yml`, `bungee.yml`, `config.yml`
## ⚠️ Urheberrecht & Nutzungsbedingungen
**ServerPulse ist urheberrechtlich geschützt. © M_Viper Alle Rechte vorbehalten.**
- ❌ Die Weitergabe dieses Plugins an Dritte ist **strengstens untersagt**
- ❌ Das Verändern, Dekompilieren oder Bearbeiten des Codes ist **nicht erlaubt**
- ❌ Eine Veröffentlichung auch in veränderter Form ist **verboten**
- ❌ Der Verkauf oder die kommerzielle Nutzung ist **nicht gestattet**
- ✅ Die Nutzung ist ausschließlich für den privaten Serverbetrieb erlaubt
Wer gegen diese Bedingungen verstößt, macht sich strafbar und kann rechtlich belangt werden.
## Version
Aktuelle Plugin-Version laut Konfiguration: 1.0.0