Seeing what was ingested, skipped, and quarantined¶
A connector run is honest: it can never look clean while it silently lost rows.
The two kinds of "not written"¶
- Benign skips — a row that already existed (
Duplicate) or was excluded by policy (PolicyExcluded). Not a loss, so it is excluded fromdeadLetterCount(a skip is not a quarantined row). - Quarantined rows (dead-letters) — a row that did not make it in, captured
with its reason:
MappingFailed,ValidationFailed,WriteFailed,MalformedSource. These are real losses and are whatdeadLetterCountcounts.
Reading a run¶
lm run get <id> shows IN, OUT, and DEAD-LETTERS. When any rows were
quarantined it prints:
⚠ N rows quarantined — see: lm dlq list --run <id>
Seeing why¶
lm dlq list --run <id>— every dead-letter the run produced (reason, attempts, message).lm dlq get <id>— the full reason detail and the offending payload (the exact row that failed).
Metrics¶
The Prometheus endpoint (/q/metrics) exposes:
lumnik_runs_total{status}— runs by terminal status.lumnik_dead_letters_total{reason}— quarantined rows by reason.
No dashboards ship with lumnik; wire these into your own monitoring if desired.