diff --git a/install-notes/000-installation-index.md b/install-notes/000-installation-index.md index 1240ad4..069f3b0 100644 --- a/install-notes/000-installation-index.md +++ b/install-notes/000-installation-index.md @@ -15,3 +15,5 @@ - [014 - PostgreSQL-Anbindung und server.env](014-postgresql-anbindung-server-env.md) - [015 - Initiales PostgreSQL-Datenbankschema und Migrationen](015-initiales-postgresql-datenbankschema-und-migrationen.md) + +- [016 - Datenbank-Healthcheck ausgelagert](016-datenbank-healthcheck-ausgelagert.md) diff --git a/install-notes/016-datenbank-healthcheck-ausgelagert.md b/install-notes/016-datenbank-healthcheck-ausgelagert.md new file mode 100644 index 0000000..7428b44 --- /dev/null +++ b/install-notes/016-datenbank-healthcheck-ausgelagert.md @@ -0,0 +1,89 @@ +# 016 - Datenbank-Healthcheck ausgelagert + +## Ziel + +Der PostgreSQL-Healthcheck wurde aus Main.kt in eine eigene Datei Database.kt ausgelagert. + +## Ergebnis + +Der Status-Endpunkt /api/v1/status liefert weiterhin den Datenbankstatus und zusätzlich latencyMs. + +Beispiel: + +{"service":"ruvnox-tactical-server","status":"online","version":"0.1.0-SNAPSHOT","database":{"status":"online","host":"192.168.178.4","port":5432,"name":"ruvnox_tactical","latencyMs":99}} + +## Neue Datei + +src/main/kotlin/de/ruvnox/tactical/Database.kt + +## Aufgaben von Database.kt + +- Datenbankkonfiguration aus Environment lesen +- JDBC-Verbindung zentral bereitstellen +- Datenbank-Healthcheck über select 1 ausführen +- Latenz in Millisekunden messen +- Fehler sicher als offline behandeln + +## Environment + +Die Datenbankwerte kommen weiterhin aus: + +/opt/ruvnox/tactical/config/server.env + +Relevante Variablen: + +DB_HOST +DB_PORT +DB_NAME +DB_USER +DB_PASSWORD + +Diese Datei wird durch systemd geladen: + +EnvironmentFile=/opt/ruvnox/tactical/config/server.env + +## API-Verhalten + +Bei erfolgreicher Verbindung: + +database.status = online +database.latencyMs = gemessene Dauer + +Bei Fehler: + +database.status = offline +database.latencyMs = null + +Der API-Endpunkt selbst bleibt erreichbar und gibt keine internen Exception-Details aus. + +## Deployment + +Deployment wurde über das bestehende Script durchgeführt: + +/opt/ruvnox/tactical/scripts/deploy-server.sh + +Ergebnis: + +Deployment erfolgreich. + +## Verifikation lokal + +curl -fsS http://127.0.0.1:8080/api/v1/status + +## Verifikation öffentlich + +curl -fsS https://tactical.ruvnox.de/api/v1/status + +## Git-Commit + +tactical-server: + +55fc27f Extract database health check + +## Abschlussstand + +- Database.kt erstellt +- Main.kt bereinigt +- Status-Endpunkt liefert latencyMs +- Deployment erfolgreich +- Code committed und gepusht