timestamp_mysql_check/README.md

131 lines
4.0 KiB
Markdown

# MySQL Timestamp Check
Ein Python-Skript zur Überwachung von MySQL-Tabellen, um sicherzustellen, dass die Daten täglich aktualisiert werden.
## Funktionsweise
Das Skript prüft alle Tabellen, die "RAW." im Namen enthalten, und überprüft, ob irgendein Zeitstempel in der Spalte "add_date" vom Vortag (gestern) existiert. Falls eine oder mehrere Tabellen keine Daten von gestern haben, wird eine Benachrichtigungs-E-Mail gesendet.
## Hauptfunktionen
- Automatische Erkennung aller Tabellen mit "RAW." im Namen
- Überprüfung, ob Zeitstempel von gestern existieren (standardmäßig in der Spalte "add_date")
- E-Mail-Benachrichtigung bei nicht aktuellen Tabellen
- Testmodus zur Simulation ohne E-Mail-Versand
- Konfiguration über .env-Datei oder Kommandozeilenparameter
## Voraussetzungen
- Python 3.6 oder höher
- Zugriff auf eine MySQL-Datenbank
- Folgende Python-Pakete:
- mysql-connector-python
- python-dotenv
Installation der benötigten Pakete:
```bash
pip install mysql-connector-python python-dotenv
```
## Konfiguration
Erstellen Sie eine `.env`-Datei im gleichen Verzeichnis wie das Skript mit folgendem Inhalt:
```
# Datenbank-Konfiguration
MYSQL_HOST=dein-mysql-server
MYSQL_USER=username
MYSQL_PASSWORD=passwort
MYSQL_DATABASE=deine_db
# E-Mail-Konfiguration
EMAIL_SENDER=absender@example.com
EMAIL_RECEIVER=empfaenger@example.com
SMTP_SERVER=smtp.example.com
SMTP_PORT=587
SMTP_USER=smtp_username
SMTP_PASSWORD=smtp_passwort
```
## Verwendung
### Standardverwendung
```bash
python mysql_timestamp_check.py
```
### Testmodus (keine E-Mail-Versendung)
```bash
python mysql_timestamp_check.py --test
```
### Mit abweichender Zeitstempel-Spalte
```bash
python mysql_timestamp_check.py --timestamp-column=andere_datum_spalte
```
### Überschreiben von .env-Einstellungen
Alle Parameter aus der .env-Datei können auch über die Kommandozeile überschrieben werden:
```bash
python mysql_timestamp_check.py --host=anderer-host --user=anderer-user --password=anderes-passwort
```
## Vollständige Parameterliste
```
--host MySQL-Hostadresse (Standard: aus .env MYSQL_HOST)
--user MySQL-Benutzername (Standard: aus .env MYSQL_USER)
--password MySQL-Passwort (Standard: aus .env MYSQL_PASSWORD)
--database MySQL-Datenbankname (Standard: aus .env MYSQL_DATABASE)
--timestamp-column Name der Zeitstempel-Spalte (Standard: add_date)
--test Testmodus: Keine E-Mail senden, nur Ausgabe auf der Konsole
--email-sender Absender-E-Mail-Adresse (Standard: aus .env EMAIL_SENDER)
--email-receiver Empfänger-E-Mail-Adresse (Standard: aus .env EMAIL_RECEIVER)
--smtp-server SMTP-Server-Adresse (Standard: aus .env SMTP_SERVER)
--smtp-port SMTP-Server-Port (Standard: aus .env SMTP_PORT)
--smtp-user SMTP-Benutzername (Standard: aus .env SMTP_USER)
--smtp-password SMTP-Passwort (Standard: aus .env SMTP_PASSWORD)
```
## Automatisierung mit Bash-Skript
```bash
chmod +x run_timestamp_check.sh
```
### Cronjob-Einrichtung
Um das Skript täglich automatisch ausführen zu lassen, können Sie einen Cronjob einrichten:
```bash
# Öffnen der crontab
crontab -e
# Fügen Sie die folgende Zeile hinzu, um das Skript täglich um 8:00 Uhr auszuführen
0 4 * * * /pfad/zu/run_timestamp_check.sh
```
## Fehlerbehebung
### Bekannte Probleme
- **Keine Verbindung zur Datenbank möglich**: Überprüfen Sie die Datenbankverbindungsparameter in der .env-Datei.
- **Keine E-Mail wird gesendet**: Stellen Sie sicher, dass die SMTP-Konfiguration korrekt ist. Verwenden Sie den Testmodus `--test`, um die gefundenen Probleme ohne E-Mail-Versand anzuzeigen.
- **Skript kann keine Tabellen finden**: Stellen Sie sicher, dass Tabellen mit "RAW." im Namen in der Datenbank existieren.
### Debug-Tipps
Für detailliertere Fehlerinformationen führen Sie das Skript im Testmodus aus:
```bash
python mysql_timestamp_check.py --test
```
## Lizenz
Dieses Skript ist für den internen Gebrauch bestimmt und unterliegt keiner speziellen Open-Source-Lizenz, sofern nicht anders angegeben.