refactor(http/prom): rename generic duration infrastructure#4419
Merged
refactor(http/prom): rename generic duration infrastructure#4419
Conversation
this type is not itself a service in all cases. it *is* a service, and is accordingly aliased to both RecordRequestDuration and RecordResponseDuration, depending on which metrics structure it is provided. to help clarify this code, this renames this generic tower service infrastructure to RecordDuration. Signed-off-by: katelyn martin <kate@buoyant.io>
as in the previous commit, which applied this change to the tower service middleware, this commit applies a change to the duration "new service" middleware. this type is generic over a metrics structure and emits services that either record request or response duration, depending on the metics provided. Signed-off-by: katelyn martin <kate@buoyant.io>
Signed-off-by: katelyn martin <kate@buoyant.io>
'body' was a sensible name when there was only one layer instrumenting body streams. now that there are request and response telemetry layers, we should use more specific terminology. Signed-off-by: katelyn martin <kate@buoyant.io>
cratelyn
added a commit
that referenced
this pull request
Feb 9, 2026
this commit introduces a new middleware layer to the inbound proxy. this instruments inbound traffic with Prometheus telemetry that records response body latency, and emits a histogram of response body durations. the buckets are chosen to mimic the request and response buckets emitted by the outbound proxy, with their granularity flipped. in other words, the inbound proxy is more interested in fine-grained request body metrics than response body metrics, while the outbound proxy is more interested in fine-grained response body metrics than request body metrics. * #4418 * #4419 Signed-off-by: katelyn martin <kate@buoyant.io>
sfleen
approved these changes
Feb 9, 2026
unleashed
approved these changes
Feb 10, 2026
zaharidichev
approved these changes
Feb 10, 2026
cratelyn
added a commit
that referenced
this pull request
Feb 10, 2026
this commit introduces a new middleware layer to the inbound proxy. this instruments inbound traffic with Prometheus telemetry that records response body latency, and emits a histogram of response body durations. the buckets are chosen to mimic the request and response buckets emitted by the outbound proxy, with their granularity flipped. in other words, the inbound proxy is more interested in fine-grained request body metrics than response body metrics, while the outbound proxy is more interested in fine-grained response body metrics than request body metrics. * #4418 * #4419 Signed-off-by: katelyn martin <kate@buoyant.io>
cratelyn
added a commit
that referenced
this pull request
Feb 11, 2026
* feat(app/inbound): introduce response duration metrics this commit introduces a new middleware layer to the inbound proxy. this instruments inbound traffic with Prometheus telemetry that records response body latency, and emits a histogram of response body durations. the buckets are chosen to mimic the request and response buckets emitted by the outbound proxy, with their granularity flipped. in other words, the inbound proxy is more interested in fine-grained request body metrics than response body metrics, while the outbound proxy is more interested in fine-grained response body metrics than request body metrics. * #4418 * #4419 Signed-off-by: katelyn martin <kate@buoyant.io> * docs(app): document latency metrics' histogram buckets this addresses review feedback, and introduces further documentation to the inbound proxy's response latency metrics. this commit also further polishes the outbound proxy's language around these constants, and adds mention to each half of the proxy regarding the other corresponding pair of metrics, to prevent drift in the future. to avoid churn, this commit phrases the inbound proxy's comments and language in terms that expect the forthcoming addition of a request latency layer to the inbound proxy, though that has not yet been implemented in this branch at time of writing. a todo comment is left in place to indicate this. Signed-off-by: katelyn martin <kate@buoyant.io> --------- Signed-off-by: katelyn martin <kate@buoyant.io>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
refactor(http/prom): rename RecordResponse to RecordDuration
this type is not itself a service in all cases. it is a service, and
is accordingly aliased to both RecordRequestDuration and
RecordResponseDuration, depending on which metrics structure it is
provided.
to help clarify this code, this renames this generic tower service
infrastructure to RecordDuration.
Signed-off-by: katelyn martin kate@buoyant.io
refactor(http/prom): rename NewRecordResponse to NewRecordDuration
as in the previous commit, which applied this change to the tower service
middleware, this commit applies a change to the duration "new service"
middleware.
this type is generic over a metrics structure and emits services that
either record request or response duration, depending on the metics
provided.
Signed-off-by: katelyn martin kate@buoyant.io
nit(http/prom): fix impl banner comments
Signed-off-by: katelyn martin kate@buoyant.io
nit(app/inbound): rename layer variable bindings
'body' was a sensible name when there was only one layer instrumenting
body streams. now that there are request and response telemetry layers,
we should use more specific terminology.
Signed-off-by: katelyn martin kate@buoyant.io