Documentation
¶
Overview ¶
Package metricslog is the Prometheus observer on the lifecycle spine. It owns no metrics of its own — it reads the per-request lifecycle Context + outcome and forwards them to the one-liner emitters in pkg/metrics. Registering it is the entire wiring for the request-flow metrics (Q1–Q2, Q5); no runner (pipeline/proxy/ws/ batch) changes, because every runner already feeds the lifecycle spine.
It registers on four seams: pre-flight (inflight gauge up), the post-flight Hook (request-flow histograms for buffered requests), a stream observer (the same histograms for streamed requests, whose Fill is skipped once a stream session pre-fills the collected set), and a Collector (inflight gauge down — Collect runs on every Finalize, unlike Fill which a pre-send stream fill can mark done).
Out of scope: the data-loss and provider-key-health metrics (Q3/Q4) are emitted at their sources (the emitters, keypool) — they don't pass through here.
Index ¶
- type Hook
- func (*Hook) Collect(lc *lifecycle.Context)
- func (*Hook) Fill(lc *lifecycle.Context, ev *lifecycle.PostFlightEvent) (any, error)
- func (*Hook) Name() string
- func (*Hook) NewObserver(lc *lifecycle.Context) lifecycle.StreamObserver
- func (*Hook) PreFlight(_ context.Context, lc *lifecycle.Context, _ *lifecycle.PreFlightEvent) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Hook ¶
type Hook struct{}
Hook reads request outcome + timing and emits the request-flow metrics. It is a pure lifecycle.Hook: it produces no stored result (returns nil) and never mutates the Context post-flight. Emitting a Prometheus sample is a cheap, non-blocking atomic op, so it satisfies the "Fill must be cheap" rule.
func (*Hook) Collect ¶ added in v0.3.0
Collect lowers the inflight gauge for a finalized request. It is a Collector, not part of Fill, because Fill is skipped when a stream session pre-filled the request — Collect runs on every Finalize.
func (*Hook) NewObserver ¶ added in v0.9.8
func (*Hook) NewObserver(lc *lifecycle.Context) lifecycle.StreamObserver
NewObserver makes the metrics observer also a StreamObserverFactory. A streamed request pre-fills its collected set, which marks the Context filled and skips the post-flight Fill fan-out — so the request-flow histograms Fill emits would be lost for every stream. This observer re-emits them at end-of-stream instead. It stores nothing (returns nil), so it never collides with a real producer under the "metrics" name.