dbrpp_watcher Projekt Dokumentáció
1. Projekt bemutatása
Cél: A dbrpp_watcher egy Python-alapú monitorozó eszköz, amely rendszeresen ellenőrzi egy MySQL adatbázis (különösen a "dbrpp" adatbázis) adatainak frissességét.
Megoldott probléma: Automatizáltan észleli az adatkimaradást vagy elavulást, Discordon értesíti az illetékeseket, és biztosítja a publikus és privát adatok naprakészségét.
Célközönség: Adatbázis-adminisztrátorok, adatmérnökök, üzemeltetők.
Fő funkciók:
- Ütemezett ellenőrzések publikus és privát adatokra
- Automatikus Discord értesítés problémák esetén
- Kíméletes leállítás és folyamatkezelés
- Egyedi naplózás, naplóforgatással
- Környezeti változókkal konfigurálható
2. Architektúra áttekintés
A projekt egy fő watcher szkript köré épül, amely szervezi az adatbázis-ellenőrzést, naplózást, értesítéseket és ütemezést. Segédmodulokat használ az adatbázis eléréshez, naplózáshoz, konfigurációhoz és egyéb segédfüggvényekhez.
dbrpp_watcher.py: Fő belépési pont, ütemezés, szervezésdb.py: Adatbázis kapcsolatkezelésloader.py: Adatbetöltés és írás logikatools.py: Segédfüggvények (értesítés, PID, szignálkezelés)- Külső szolgáltatások: MySQL adatbázis, Discord webhook
Architektúra diagram:
3. Fájl- és könyvtárstruktúra
dbrpp_watcher.py: Fő watcher szkriptdb.py: Adatbázis kapcsolatkezelőloader.py: Adatbetöltő/író függvényektools.py: Segédfüggvények (értesítés, PID, szignálok)conf_log.py: Naplózás konfigurációconfig.py:.envbetöltéserequirements.txt: Python függőségekrun.sh: Indító shell script.env: Környezeti változóklogs/: Naplófájlok (forgatott)__pycache__/: Python bytecode cache
Könyvtárstruktúra diagram:
4. Konfiguráció
.envfájl: DB hozzáférés, webhook URL, base URLconfig.py: Betölti és elérhetővé teszi ezeket
Szükséges opciók: MySQL kapcsolati adatok és DC_WEBHOOK_URL.
Beállítás: Másold a .env-t a projekt gyökérbe, töltsd ki az adatokat.
MYSQL_PORT = 3306
MYSQL_HOST_DBR = "localhost"
MYSQL_USER_DBR = "user"
MYSQL_PASSWORD_DBR = "password"
MYSQL_DATABASE_DBR = "DBR"
...
DC_WEBHOOK_URL = "https://discord.com/api/webhooks/..."
5. Naplózás
- A naplózást a
conf_log.pyésinit_log()inicializálja - A naplók a
logs/könyvtárba kerülnek - A naplózási szint és formátum módosítható a
dbrpp_watcher.pyésconf_log.pyfájlokban
6. Adatbázis integráció
- Az adatbázis kapcsolatot a
ConnectionHandlerkezeli (db.py) - MySQL-hez kapcsolódik a
.envalapján - A
dbrppadatbázis tábláival dolgozik (publikus és privát adatok)
7. Ütemezés és fő ciklus
- A
schedulekönyvtár futtatja amain()-t percenként adott másodperckor - Minden futás lekéri a publikus/privát adatokat, ellenőrzi a frissességet, szükség esetén értesít
Ütemezett futás szekvencia diagram:
8. Szignálkezelés és folyamatmenedzsment
- Kezeli a
SIGINTésSIGTERMjeleket acustom_signal_handlersegítségével (tools.py) - Saját PID-jét JSON fájlban tárolja
- Kíméletes leállításkor naplóz és takarít
9. Értesítések
- Discord értesítések a
send_message_to_dcfüggvénnyel (tools.py) - Adat elavulás vagy hiba esetén aktiválódik
- A webhook URL a
.env-benDC_WEBHOOK_URLnéven
10. Adatbetöltés és írás
send_private_data_bin: Privát adat bináris fájlként küldésesend_public_data: Publikus adat küldésedb_writer_pub: Publikus adat írása adatbázisbadb_writer_priv_df: Privát adat írása adatbázisba
11. Hibakezelés
- Hibák a
logs/*.errfájlokba kerülnek - Kritikus hibák Discord értesítést is kiválthatnak
- A naplók visszanézhetők hibakereséshez
12. Telepítés és futtatás
- Függőségek telepítése:
pip install -r requirements.txt .envbeállítása- Indítás:
./run.shvagypython dbrpp_watcher.py - Naplók figyelése a
logs/könyvtárban
13. Bővítés és testreszabás
- Új adatellenőrzés:
main()bővítése vagy új függvény aloader.py-ban - Új értesítési csatorna: új függvény a
tools.py-ban - Új konfigurációs opció:
.envésconfig.pybővítése
14. Tesztelés
- Alapértelmezetten nincs explicit teszt
- Adj hozzá teszteket pl.
pytest-tel - Futtatás:
pytestvagy hasonló eszköz
15. Fogalomtár
- dbrpp: A monitorozott MySQL adatbázis
- Figyelő: A fő folyamat, amely ellenőrzi az adatok frissességét
- Publikus/Privát adat: A watcher által kezelt különböző adathalmazok
- Discord Webhook: URL végpont Discord értesítésekhez
- PID: Folyamat azonosító, a futó példányok követéséhez
- Schedule: Python könyvtár időzített feladatokhoz