Workflow‑Runs: 100% „ok“ für manuell ausgelöste Runs.
Beispiel‑SQL (SLIs):
-- Letztes Kursdatum je ISIN (XETR)
SELECT isin, MAX(date) AS last_price
FROM core.prices_daily
WHERE mic='XETR'
GROUP BY isin;
-- Letzter Marktstatus
SELECT MAX(date) AS last_market_state FROM core.market_state;
-- Job-Erfolgsquote
SELECT job_name,
AVG(CASE WHEN status='ok' THEN 1 ELSE 0 END)::numeric(5,2) AS success_rate
FROM core.job_runs
GROUP BY job_name;
Monitoring/Metriken/Dashboards
Monitoring-Quellen aktuell:
n8n Executions UI (Erfolg/Fehler pro Knoten/Workflow).
PostgreSQL Abfragen (SLIs oben).
Dashboards: noch keine externe Visualisierung im Einsatz; Prüfung erfolgt via n8n UI + SQL‑Abfragen.
Logging (Quellen, Struktur, Retention)
Quellen:
n8n Execution Logs (internal).
core.jobruns (Start, Ende, Status, Fehlertext).
core.alertslog (für spätere Alerts, derzeit ohne Einträge).
core.data_quality (erkannte Datenprobleme).
Retention:
PostgreSQL: keine TTL aktiv; Logs verbleiben dauerhaft bis manueller Purge.
n8n Executions: Retention gemäß n8n‑Einstellungen der Instanz.
Alarmierung/On‑Call/Schwellwerte
Aktueller Stand:
Keine automatischen Alarme konfiguriert.
Manuelle Checks per SQL/n8n UI.
Schwellwerte (für manuelle Prüfung):
Kein neuer Marktstatus > 2 Tage → untersuchen.
Kein neuer Preis (XETR) > 3 Handelstage → untersuchen.
job_runs.status in ['fail','partial'] → untersuchen.
Erneute manuelle Ausführung der betroffenen Knoten.
Datenintegrität:
Bei defekten Importen betroffene ISIN in core.dataquality dokumentieren (issuetype, severity, note).
Falls nötig einzelne Tage in core.prices_daily löschen/neu laden (DELETE … WHERE isin=… AND date BETWEEN …).
Post‑Mortem:
Kurzbeschreibung von Ursache/Auswirkung/Behebung in Wiki notieren.
Optional SQL‑Auszug/Logs anhängen.
Hilfs‑SQL:
-- Stale Preise XETR > 3 Tage
SELECT s.isin, s.name, MAX(p.date) AS last_price
FROM core.securities s
LEFT JOIN core.prices_daily p ON p.isin=s.isin AND p.mic='XETR'
GROUP BY s.isin, s.name
HAVING MAX(p.date) < (CURRENT_DATE - INTERVAL '3 day');
-- Fehlgeschlagene Jobs
SELECT * FROM core.job_runs WHERE status IN ('fail','partial') ORDER BY started_at DESC;
DR/Restore‑Smoke‑Tests (Ergebnisse/Termine)
2026‑02‑01: Initiale Funktionsprüfung erfolgreich
„Add Security“-Flow mit ISIN DE000BASF111 ausgeführt → core.securities/core.listings befüllt.
Historienkurse via Stooq geladen → core.pricesdaily befüllt.