550b5261e1286f53fad21ce5fb3746944f352e1b
TI-Status-Bot
Ein Python-Skript, das den TI-Status überwacht und neue Meldungen über Apprise an verschiedene Dienste sendet.
Features
- Überwacht die TI-Status-API auf neue Meldungen
- Sendet Benachrichtigungen über Apprise (unterstützt alle verbreiteten Dienste wie Mattermost, Slack, Telegram, Discord, SMTP, Teams, etc.)
- Mehrere Endpunkte gleichzeitig (Mattermost + Slack + Telegram + ...)
- Konfigurierbare Benachrichtigungsregeln (Filter, Zeiten, Verzögerungen)
- Konfiguration über .env Datei
- Markdown-Formatierung der Nachrichten
- Vermeidet Duplikate durch lokale Statusverfolgung
- Debug-Ausgaben für bessere Transparenz
- Umfassendes Test-Tool
- Statistische Erfassung der Störungen
Installation
Option 1: Lokale Python-Installation
- Repository klonen:
git clone https://gitea.medisoftware.org/Markus/TI-Status2Mattermost.git
cd TI-Status2Mattermost
- Virtuelle Umgebung erstellen und aktivieren:
python -m venv .venv
# Windows:
.venv\Scripts\activate
# Linux/Mac:
source .venv/bin/activate
- Abhängigkeiten installieren:
pip install -r requirements.txt
Option 2: Docker (Empfohlen)
- Repository klonen:
git clone https://gitea.medisoftware.org/Markus/TI-Status2Mattermost.git
cd TI-Status2Mattermost
-
Docker und Docker Compose installieren (falls noch nicht vorhanden)
-
Konfiguration einrichten (siehe Abschnitt "Konfiguration")
-
Container starten:
docker-compose up --build
Konfiguration
- Kopiere die Beispiel-Konfiguration:
# Windows:
copy env.example .env
# Linux/Mac:
cp env.example .env
- Bearbeite die
.envDatei und konfiguriere deine Endpunkte:
Mehrere Endpunkte konfigurieren
# Mattermost Webhook
APPRISE_URL_MATTERMOST=mattermost://username:password@<your-mattermost-server>/channel?webhook=your_webhook_id
# Slack (optional)
APPRISE_URL_SLACK=slack://token_a/token_b/token_c/#channel
# Telegram (optional)
APPRISE_URL_TELEGRAM=telegram://bottoken/ChatID
# Discord (optional)
APPRISE_URL_DISCORD=discord://webhook_id
# Email (optional)
APPRISE_URL_EMAIL=smtp://user:pass@gmail.com:587
# Pushover (optional)
APPRISE_URL_PUSHOVER=pover://token/user_key
# Microsoft Teams (optional)
APPRISE_URL_TEAMS=msteams://TokenA/TokenB/TokenC/
Benachrichtigungsregeln
# Benachrichtigungslevel (all, critical, maintenance, outage)
NOTIFICATION_LEVEL=all
# Filter für bestimmte Begriffe (kommagetrennt)
NOTIFICATION_FILTERS=störung,wartung,warnung
# Benachrichtigungszeiten (24h Format)
NOTIFICATION_HOURS=08:00-18:00
# Verzögerung zwischen Benachrichtigungen (in Sekunden)
NOTIFICATION_DELAY=5
# Debug-Modus für detaillierte Ausgaben
DEBUG_MODE=true
Weitere Apprise-URLs
Weitere Apprise-URLs findest du in der Apprise-Dokumentation.
Docker-Architektur
Services
ti-status-checker
- Hauptservice für die kontinuierliche Überwachung der TI-Status-API
- Läuft dauerhaft und prüft regelmäßig auf neue Meldungen
- Sendet Benachrichtigungen bei Änderungen
- Zeichnet Störungen in der Statistik auf
ti-statistics
- Statistik-Service für periodische Berichte
- Kann manuell oder automatisch ausgeführt werden
- Generiert und sendet detaillierte Ausfall-Statistiken
- Läuft unabhängig vom Hauptservice
Volume-Mappings
Alle wichtigen Dateien werden als lokale Volumes eingebunden:
volumes:
# Konfiguration (read-only)
- ./.env:/app/.env:ro
# Persistierte Daten
- ./ti_status_state.json:/app/ti_status_state.json
- ./ti_outage_statistics.json:/app/ti_outage_statistics.json
Vorteile:
- ✅ Daten bleiben auf dem lokalen System
- ✅ Einfache Updates ohne Datenverlust
- ✅ Backup der Konfiguration und Daten möglich
- ✅ Debugging und Monitoring von außen
Netzwerk
- Isoliertes Docker-Netzwerk
ti-status-network - Services können untereinander kommunizieren
- Externe Verbindungen nur für API-Calls und Benachrichtigungen
Umgebungsvariablen
environment:
- DBG_MODE=false # Kann in .env überschrieben werden
Automatischer Restart
restart: unless-stopped
- Container startet automatisch nach Neustart des Hosts
- Bei Fehlern wird der Container neu gestartet
- Nur bei manuellem Stopp bleibt der Container gestoppt
Verwendung
Mit lokaler Python-Installation
Hauptskript ausführen:
python ti_status_checker.py
Mit Docker
Container starten:
# Alle Services starten
docker-compose up --build
# Nur den Hauptservice starten
docker-compose up ti-status-checker
# Im Hintergrund laufen lassen
docker-compose up -d
Container verwalten:
# Logs anzeigen
docker-compose logs -f ti-status-checker
# Container stoppen
docker-compose down
# Container neu starten
docker-compose restart ti-status-checker
# Status anzeigen
docker-compose ps
Statistik-Service:
# Nur Statistik-Bericht senden
docker-compose run --rm ti-statistics
# Statistik-Service dauerhaft starten
docker-compose up ti-statistics
Verbindungstest:
python test_apprise.py
Das Test-Skript bietet:
- Test aller konfigurierten Endpunkte
- Einzeltests für jeden Endpunkt
- Konfigurationsanzeige
- Direkte URL-Tests
Debug-Modus aktivieren:
# In .env setzen:
DEBUG_MODE=true
Das Skript gibt dann detaillierte Debug-Informationen aus:
- API-Aufruf und Antwort
- Anzahl der gefundenen Meldungen
- Verarbeitung jeder einzelnen Meldung
- Benachrichtigungsregeln-Auswertung
- Endpunkt-Status
Für kontinuierliche Überwachung
Mit lokaler Python-Installation (cron):
# Alle 5 Minuten ausführen
*/5 * * * * cd /path/to/TI-Status2Mattermost && python ti_status_checker.py
Mit Docker (automatischer Restart):
# Container läuft dauerhaft und startet automatisch neu
docker-compose up -d
# Für periodische Ausführung alle 5 Minuten (in docker-compose.yml aktivieren):
# command: ["sh", "-c", "while true; do python ti_status_checker.py; sleep 300; done"]
Benachrichtigungsregeln
Filter
- Nur Meldungen mit bestimmten Begriffen senden
- Beispiel:
NOTIFICATION_FILTERS=störung,wartung
Zeiten
- Benachrichtigungen nur zu bestimmten Zeiten
- Beispiel:
NOTIFICATION_HOURS=08:00-18:00(nur werktags) - Beispiel:
NOTIFICATION_HOURS=09:00-17:00,19:00-22:00(mehrere Zeiträume)
Verzögerungen
- Verzögerung zwischen mehreren Benachrichtigungen
- Beispiel:
NOTIFICATION_DELAY=30(30 Sekunden Pause)
Unterstützte Dienste
Apprise unterstützt über 80 verschiedene Benachrichtigungsdienste, darunter:
- Mattermost
- Slack
- Telegram
- Discord
- Pushover
- Microsoft Teams
- und viele weitere
Dateien
Anwendung
ti_status_checker.py- Hauptskript mit Multi-Endpoint-Supportti_statistics.py- Statistik-Funktionalität für Störungentest_apprise.py- Umfassendes Test-Tool für alle Endpunkte
Konfiguration
requirements.txt- Python-Abhängigkeiten (python-dotenv, apprise)env.example- Beispiel-Konfiguration mit allen Optionen.env- Deine Konfiguration (nicht im Repository)
Docker
Dockerfile- Container-Image für die Anwendungdocker-compose.yml- Multi-Service-Orchestrierung.dockerignore- Dateien die vom Docker Build ausgeschlossen werden
Daten
ti_status_state.json- Lokale Statusverfolgung (wird automatisch erstellt)ti_outage_statistics.json- Statistik-Daten der Störungen (wird automatisch erstellt)
Changelog
Version 3.1 (Docker-Support)
- ✅ Vollständige Docker-Integration mit Dockerfile und docker-compose.yml
- ✅ Multi-Service-Architektur (Hauptservice + Statistik-Service)
- ✅ Lokale Volume-Mappings für .env und .json Dateien
- ✅ Automatischer Restart und Container-Management
Version 3.0 (Multi-Endpoint & Rules)
- ✅ Mehrere Apprise-Endpunkte gleichzeitig
- ✅ Konfigurierbare Benachrichtigungsregeln (Filter, Zeiten, Verzögerungen)
- ✅ Erweiterte Debug-Ausgaben
- ✅ Umfassendes Test-Tool für alle Endpunkte
- ✅ Fallback für alte Konfigurationen
Version 2.0 (Apprise-Integration)
- ✅ Umstellung von Mattermost Webhook auf Apprise API
- ✅ Konfiguration über .env Datei
- ✅ Unterstützung für über 80 Benachrichtigungsdienste
- ✅ Debug-Ausgaben für bessere Transparenz
- ✅ Verbesserte Markdown-Formatierung
Version 1.0 (Ursprünglich)
- Mattermost Webhook Integration
- Lokale Statusverfolgung
Lizenz
Description
Ein Python-Skript, das den TI-Status überwacht und neue Meldungen über Apprise an verschiedene Dienste sendet.
https://medisoftware.de
Languages
Python
97.6%
Dockerfile
1.8%
Batchfile
0.6%