342 lines
8.5 KiB
Markdown
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) |