timestamp_mysql_check/README.md

3.9 KiB

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 dem Präfix "RAW."
  • Überprüfung des letzten Zeitstempels (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:

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

python mysql_timestamp_check.py

Testmodus (keine E-Mail-Versendung)

python mysql_timestamp_check.py --test

Mit abweichender Zeitstempel-Spalte

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:

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

Um das Skript täglich automatisch ausführen zu lassen, können Sie einen Cronjob einrichten:

# Öffnen der crontab
crontab -e

# Fügen Sie die folgende Zeile hinzu, um das Skript täglich um 8:00 Uhr auszuführen
0 8 * * * /usr/bin/python3 /pfad/zu/mysql_timestamp_check.py

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 dem Präfix "RAW." in der Datenbank existieren.

Debug-Tipps

Für detailliertere Fehlerinformationen führen Sie das Skript im Testmodus aus:

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.