Files
TI-Status-Bot/README.md

342 lines
8.5 KiB
Markdown

# 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@<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
```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)