Skip to content

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 from deadLetterCount (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 what deadLetterCount counts.

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.