Admin · Logs & Diagnose

System-Status

Diese Seite (Admin → Logs & Diagnose → „System-Status") ist die zentrale Diagnose-Übersicht. Sie zeigt auf einen Blick, ob Cron, Datenbank und Geocoding gesund sind. Du brauchst dafür das Recht admin.access.

Cron & Anwendung

Die obere Karten-Reihe zeigt:

  • Cron-Lauf — wann der Cron zuletzt lief, mit Ampel: OK (≤ 90 s), verzögert (1,5–5 min) oder gestoppt (> 5 min — Cron läuft nicht mehr).
  • Cron-Heartbeats (1 h) — wie viele Heartbeats in der letzten Stunde ankamen (erwartet: rund 12).
  • Datenbank — grün, wenn ein SELECT 1 durchgeht.
  • Zeitzone — welche Zeitzone für alle Uhrzeiten im Tagebuch gilt, und ob Anwendung und Datenbank dieselbe benutzen (siehe unten).
  • Letzter Alarm im ETB und verarbeitete Alarme seit dem letzten ETB-Reset (mit 24-h-Wert).
  • Tages-Heartbeat — Zeitpunkt der täglichen Status-Meldung.

Zeitzone

Die Karte Zeitzone nennt die geltende Zeitzone (im Regelfall Europe/Berlin) und daneben den Versatz, mit dem PHP und die MySQL-Sitzung gerade rechnen. Steht dort synchron, ist alles in Ordnung — Du musst nichts tun.

Warum die Karte überhaupt existiert: Uhrzeiten entstehen im Tagebuch auf zwei Wegen. Die Datenbank setzt die Zeitstempel von Kommentaren, Historie und Statuswechseln; die Anwendung schreibt die Alarm-Annahmezeit und formatiert jede Anzeige. Beide müssen dieselbe Zeitzone benutzen, sonst zeigt das Tagebuch Zeiten an, die um Stunden neben dem liegen, was tatsächlich passiert ist. Die Anwendung stellt das beim Verbindungsaufbau selbst her; die Karte belegt, dass es auf Deinem Server auch geklappt hat.

⚠️ Steht dort abweichend, laufen Datenbank und Anwendung auseinander — Zeitstempel aus der Datenbank werden dann falsch angezeigt. Prüfe APP_TIMEZONE in config/.env (siehe Installation). DB unbekannt heißt nur, dass sich der Versatz der Datenbank gerade nicht ermitteln ließ.

Geocode-Cache

Die Karte Cache zeigt, wie viele Adressen gecacht sind, aufgeschlüsselt nach Quelle (Nominatim/Photon), sowie den ältesten und neuesten Eintrag. „Cache leeren" verwirft alle Einträge; „Cache anzeigen / verwalten" führt zur eigenen Geocode-Cache-Seite.

ℹ️ Der Geocode-Cache überlebt den Auto-/Wochen-Reset bewusst — sonst müsste jede Adresse danach neu aufgelöst werden. Geleert wird er nur manuell.

Export-Bild-Cache

Die Karte Export-Bild-Cache zeigt, wie viel Platz die verkleinerten Bild-Fassungen für den PDF-Export gerade belegen: die Gesamtgröße, die Anzahl der Fassungen, die Obergrenze (250 MB) und das Alter des ältesten Eintrags. Bis 200 MB steht die Karte auf unkritisch, darüber auf fast voll.

Du musst hier nichts tun. Es gibt bewusst keinen „Leeren"-Knopf:

  • Der Ordner ist ein reiner Zwischenspeicher. Jede Fassung wird aus einem Anhang berechnet, der weiterhin unangetastet im Tagebuch liegt.
  • Der tägliche Wartungslauf räumt selbst auf: Er entfernt Fassungen, die seit 30 Tagen nicht mehr gebraucht wurden, und — falls der Cache danach immer noch über der Obergrenze liegt — zusätzlich die ältesten, bis er wieder passt.
  • Gelöschte Fassungen entstehen beim nächsten Export dieses Einsatzes automatisch neu. Der einzige Effekt ist, dass genau dieser eine Export ein paar Sekunden länger braucht.

⚠️ Das Aufräumen hängt am Tages-Heartbeat (/api/heartbeat.php?token=…, siehe Cron & Mail-Verarbeitung). Ist dieser Cron-Job auf Deiner Instanz nicht eingerichtet, wächst der Ordner unbegrenzt weiter — die Karte ist dann Dein Frühwarnsystem. Vom Telegram-Versand ist das Aufräumen unabhängig: Es läuft auch auf Instanzen ohne Alarmpush oder Telegram.

ℹ️ Die Belegungs-Anzeige wird bis zu 60 Sekunden zwischengespeichert — sie muss sonst bei jedem Auto-Refresh den ganzen Ordner durchzählen. Direkt nach einem Aufräumen stimmt der Wert wieder sofort.

ℹ️ Hat die Wartung tatsächlich etwas entfernt, taucht das auch in der Heartbeat-Nachricht auf („🖼 Export-Bilder aufgeräumt: … frei") und als Eintrag im Log-Dashboard. Gab es nichts zu tun, bleibt die Meldung weg.

what3words-Kontingent

Ist der kostenpflichtige Dienst what3words aktiv (siehe Einstellungen), erscheint zusätzlich die Karte what3words-Kontingent. Sie zeigt die Aufrufe im laufenden Monat — und, falls dort ein Monatslimit hinterlegt ist, den Wert als „Verbrauch / Limit". Ab 80 % des Limits schaltet die Karte auf Warnung.

ℹ️ Der Zähler ist ein lokaler Monatszähler — er wird bei jedem what3words-Abruf hochgezählt und beginnt zum Monatswechsel neu. Hier findet kein Live-API-Aufruf statt (der kostet ja). Dieselbe Zahl steht auch im Tages-Heartbeat an den Telegram-Status-Chat; ist ein Limit gesetzt, nennt er die verbleibenden Aufrufe. Ohne aktives what3words fehlt die Karte ganz. Plus Codes brauchen kein Kontingent (sie werden offline berechnet).

Provider-Verfügbarkeit

Über „Provider testen" prüfst Du auf Knopfdruck, ob Nominatim und Photon erreichbar sind (Antwortzeit + HTTP-Status, mit Hinweis bei Rate-Limit oder IP-Sperre).

ℹ️ Der Provider-Test läuft nur auf Klick, nicht im Auto-Refresh — sonst würde das Nominatim-Kontingent unnötig verbraucht. Bei einer Sperre schwenkt die Anwendung automatisch auf Photon.

Aktuell halten

Rechts in der Titelleiste steht der Auto-Refresh-Umschalter (Aus · 5 s · 15 s · 60 s, Standard 5 s). Beim automatischen Neuladen werden die Einmal-Aktionen (Provider-Test, Cache-Flush) bewusst nicht wiederholt.

Was als nächstes?