Alerts: AnkusaBacklogStale, AnkusaDeliveryLatencySLOBreach
Hooks are acked and durable but reach their sinks late. AnkusaBacklogStale: the oldest due delivery on a node has waited more than 5 minutes. AnkusaDeliveryLatencySLOBreach: deliveries to one sink settle (receipt to confirmation, retries and backoff included) with p99 above 5 s.
ankusa_queue_oldest_due_age_seconds is the backlog's age, ankusa_queue_pending the first attempts waiting, ankusa_queue_scheduled the retries waiting.ankusa_dispatch_running, ankusa_dispatch_claimed and ankusa_dispatch_runnable. Zero running with a backlog means the dispatch domain is down: check ankusa_instance_subtree_down_total{domain="dispatch"} (node-unready) and that the node's roles include dispatch.ankusa_dispatch_attempt_duration_seconds by sink and result (error, timeout) and ankusa_dispatch_breakers_open (breaker-open).ankusa_dispatch_claimed at dispatch.max_inflight, or ankusa_dispatch_claimed_bytes at dispatch.max_inflight_bytes, with healthy sinks: the pipeline is the limit. ankusa_dispatch_tenant_inflight shows a tenant at its window (dispatch.tenants).ankusa_dispatch_lanes_blocked counts lane heads waiting out a retry; one stuck message holds its lane only (delivery).ankusa_store_unavailable_seconds above 0: store-write-failed.ankusa_dispatch_config_errors_total counts rows dead-lettered for a refused credential). Rows back off and retry by themselves.dispatch.concurrency (default 32), dispatch.sink_concurrency (8) or dispatch.max_inflight (4096), within what the sinks tolerate, or add a node.dispatch.sink_concurrency so it cannot take every slot.subtree stopped error, fix the cause (a sink that raises, a port taken). The domain restarts itself after a backoff of at most 60 s and the backlog drains.POST /v1/replays with kind: dlq revives them (delivery).max(ankusa_queue_oldest_due_age_seconds) falls below 300 and keeps falling; ankusa_queue_pending trends to its normal level.histogram_quantile(0.99, sum by (le, sink) (rate(ankusa_delivery_latency_seconds_bucket{result="ok"}[10m]))) is under 5 for every sink.queue.max_oldest_due_ms set, GET /ready no longer lists "backlog": "failing".Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |