Dieser Prometheus Exporter sammelt Daten von der Träwelling API und stellt sie als Prometheus-Metriken zur Verfügung. Er bietet detaillierte Informationen über aktuelle Züge, einschließlich Zugtyp und Fahrtart (privat, geschäftlich, Pendelverkehr), sowie Gesamtstatistiken wie Gesamtdistanz, Gesamtdauer und Gesamtpunkte für jeden Benutzer.
- Abfrage der Träwelling API für aktuelle Zugdaten und Benutzerdetails
- Bereitstellung von Prometheus-Metriken für:
- Aktuelle Zugstatus (aktiv/inaktiv) mit Zugtyp und Fahrtart
- Gesamte Zugstrecke eines Benutzers in Kilometern
- Gesamte Zugdauer eines Benutzers in Minuten
- Gesamtpunkte eines Benutzers
- Konsolenausgabe detaillierter Zuginformationen
- Regelmäßige Aktualisierung der Daten (alle 5 Minuten)
- Go 1.15 oder höher
- Docker und Docker Compose (für containerisierte Ausführung)
- Gültiger Träwelling API-Token
- Liste der Benutzernamen, die abgefragt werden sollen
-
Klone das Repository:
git clone https://github.com/yourusername/traewelling-prometheus-exporter.git cd traewelling-prometheus-exporter -
Installiere die erforderlichen Go-Pakete:
go get github.com/prometheus/client_golang/prometheus go get github.com/prometheus/client_golang/prometheus/promauto go get github.com/prometheus/client_golang/prometheus/promhttp -
Erstelle eine
.envDatei im Projektverzeichnis und füge deinen Träwelling API-Token sowie die Liste der Benutzernamen hinzu:TRAEWELLING_TOKEN=your_token_here TRAEWELLING_USERNAMES=user1,user2,user3
-
Baue die Anwendung:
go build -o traewelling-exporter -
Führe die Anwendung aus:
./traewelling-exporter
-
Baue das Docker-Image:
docker-compose build -
Starte den Container:
docker-compose up -d
Nach dem Start ist der Exporter unter http://localhost:8080/metrics erreichbar. Prometheus kann so konfiguriert werden, dass es diese Endpunkt abfragt.
Füge folgende Job-Konfiguration zu deiner prometheus.yml hinzu:
scrape_configs:
- job_name: 'traewelling'
static_configs:
- targets: ['localhost:8080']
-
traewelling_current_train_statuses:- Labels:
username: Der Benutzername.line_name: Die Linie des Zuges (z. B. S3).origin: Startbahnhof.destination: Zielbahnhof.train_type: Typ des Zuges (z. B. "national", "regional", etc.).trip_type: Art der Fahrt (z. B. "personal", "business", "commute").
- Wert:
1: Der Zug ist aktiv.0: Der Zug ist inaktiv.
- Labels:
-
traewelling_total_train_distance_km: Gesamte Zugstrecke eines Benutzers in Kilometern. -
traewelling_total_train_duration_minutes: Gesamte Zugdauer eines Benutzers in Minuten. -
traewelling_total_points: Gesamtpunkte eines Benutzers.
Beiträge sind willkommen! Bitte erstelle ein Issue oder einen Pull Request für Verbesserungsvorschläge oder Fehlerbehebungen.
Bei Fragen oder Problemen erstelle bitte ein GitHub Issue oder kontaktiere [email protected].