# 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](https://github.com/gematik/api-tilage) auf neue Meldungen - Sendet Benachrichtigungen über [Apprise](https://github.com/caronc/apprise#supported-notifications) (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](./README_STATISTICS.md) ## Installation ### Option 1: Lokale Python-Installation 1. Repository klonen: ```bash git clone https://gitea.medisoftware.org/Markus/TI-Status2Mattermost.git cd TI-Status2Mattermost ``` 2. Virtuelle Umgebung erstellen und aktivieren: ```bash python -m venv .venv # Windows: .venv\Scripts\activate # Linux/Mac: source .venv/bin/activate ``` 3. Abhängigkeiten installieren: ```bash pip install -r requirements.txt ``` ### Option 2: Docker (Empfohlen) 1. Repository klonen: ```bash git clone https://gitea.medisoftware.org/Markus/TI-Status2Mattermost.git cd TI-Status2Mattermost ``` 2. Docker und Docker Compose installieren (falls noch nicht vorhanden) 3. Konfiguration einrichten (siehe Abschnitt "Konfiguration") 4. Container starten: ```bash docker-compose up --build ``` ## Konfiguration 1. Kopiere die Beispiel-Konfiguration: ```bash # Windows: copy env.example .env # Linux/Mac: cp env.example .env ``` 2. Bearbeite die `.env` Datei und konfiguriere deine Endpunkte: ### Mehrere Endpunkte konfigurieren ```bash # Mattermost Webhook APPRISE_URL_MATTERMOST=mattermost://username:password@/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 ```bash # 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](https://github.com/caronc/apprise#supported-notifications). ## 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: ```yaml 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 ```yaml environment: - DBG_MODE=false # Kann in .env überschrieben werden ``` ### Automatischer Restart ```yaml 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: ```bash python ti_status_checker.py ``` ### Mit Docker #### Container starten: ```bash # 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: ```bash # 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: ```bash # Nur Statistik-Bericht senden docker-compose run --rm ti-statistics # Statistik-Service dauerhaft starten docker-compose up ti-statistics ``` ### Verbindungstest: ```bash python test_apprise.py ``` Das Test-Skript bietet: - Test aller konfigurierten Endpunkte - Einzeltests für jeden Endpunkt - Konfigurationsanzeige - Direkte URL-Tests ### Debug-Modus aktivieren: ```bash # 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): ```bash # Alle 5 Minuten ausführen */5 * * * * cd /path/to/TI-Status2Mattermost && python ti_status_checker.py ``` #### Mit Docker (automatischer Restart): ```bash # 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 - Email - Pushover - Microsoft Teams - und viele weitere ## Dateien ### Anwendung - `ti_status_checker.py` - Hauptskript mit Multi-Endpoint-Support - `ti_statistics.py` - Statistik-Funktionalität für Störungen - `test_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 Anwendung - `docker-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 [MIT License](LICENSE.txt)