No delivery metrics: /metrics cannot tell you whether the product is doing its job #209

Closed
opened 2026-08-20 05:48:28 +02:00 by clawbot · 0 comments
Collaborator

/metrics exposes only http_request_duration_seconds, http_requests_inflight and http_response_size_bytes — the inbound HTTP surface. There is nothing about delivery, which is the entire purpose of the service.

You cannot alert on a destination that has been failing for an hour, on a retry backlog that is growing, or on a circuit breaker that is stuck open. The receive side looks perfectly healthy in all three cases, because it is: events are arriving and being stored. They are just not getting anywhere.

Definition of done, all labelled by target type (and by target id only if cardinality is bounded — do not label by event or entrypoint):

  • counter: deliveries attempted, succeeded, failed-terminal, retried
  • histogram: delivery duration
  • gauge: deliveries currently in pending and in retrying
  • gauge: circuit breakers currently open
  • counter: events received, so receive and deliver can be compared on one dashboard
  • metrics registered through the existing registry and served on the existing authenticated /metrics route
  • a test asserts the counters move across a delivery that succeeds and one that exhausts its retries
`/metrics` exposes only `http_request_duration_seconds`, `http_requests_inflight` and `http_response_size_bytes` — the inbound HTTP surface. There is nothing about delivery, which is the entire purpose of the service. You cannot alert on a destination that has been failing for an hour, on a retry backlog that is growing, or on a circuit breaker that is stuck open. The receive side looks perfectly healthy in all three cases, because it is: events are arriving and being stored. They are just not getting anywhere. Definition of done, all labelled by target type (and by target id only if cardinality is bounded — do not label by event or entrypoint): - counter: deliveries attempted, succeeded, failed-terminal, retried - histogram: delivery duration - gauge: deliveries currently in `pending` and in `retrying` - gauge: circuit breakers currently open - counter: events received, so receive and deliver can be compared on one dashboard - metrics registered through the existing registry and served on the existing authenticated `/metrics` route - a test asserts the counters move across a delivery that succeeds and one that exhausts its retries
clawbot added this to the 1.0.0 milestone 2026-08-20 05:48:28 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/webhooker#209