.vscode | ||
dashboard | ||
go | ||
.env.example | ||
.gitignore | ||
docker-compose.yml | ||
README.md |
Träwelling Prometheus Exporter
Beschreibung
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.
Funktionen
- 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)
Voraussetzungen
- 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
Installation
-
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
.env
Datei 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
Ausführung
Lokale Ausführung
-
Baue die Anwendung:
go build -o traewelling-exporter
-
Führe die Anwendung aus:
./traewelling-exporter
Mit Docker
-
Baue das Docker-Image:
docker-compose build
-
Starte den Container:
docker-compose up -d
Verwendung
Nach dem Start ist der Exporter unter http://localhost:8080/metrics
erreichbar. Prometheus kann so konfiguriert werden, dass es diese Endpunkt abfragt.
Prometheus Konfiguration
Füge folgende Job-Konfiguration zu deiner prometheus.yml
hinzu:
scrape_configs:
- job_name: 'traewelling'
static_configs:
- targets: ['localhost:8080']
Metriken
-
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.
Beitragen
Beiträge sind willkommen! Bitte erstelle ein Issue oder einen Pull Request für Verbesserungsvorschläge oder Fehlerbehebungen.
Lizenz
Kontakt
Bei Fragen oder Problemen erstelle bitte ein GitHub Issue oder kontaktiere admin@brothertec.eu.