Skip to content

refactor(http/prom): rename generic duration infrastructure#4419

Merged
cratelyn merged 4 commits intomainfrom
kate/http-prom.bikeshedding-nits
Feb 10, 2026
Merged

refactor(http/prom): rename generic duration infrastructure#4419
cratelyn merged 4 commits intomainfrom
kate/http-prom.bikeshedding-nits

Conversation

@cratelyn
Copy link
Member

@cratelyn cratelyn commented Feb 9, 2026

  • 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

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 cratelyn self-assigned this Feb 9, 2026
@cratelyn cratelyn changed the title kate/http prom.bikeshedding nits refactor(http/prom): rename generic duration infrastructure Feb 9, 2026
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>
@cratelyn cratelyn marked this pull request as ready for review February 9, 2026 21:11
@cratelyn cratelyn requested a review from a team as a code owner February 9, 2026 21:11
@cratelyn cratelyn requested review from unleashed and zaharidichev and removed request for a team February 9, 2026 21:22
@cratelyn cratelyn merged commit 9910adb into main Feb 10, 2026
14 of 15 checks passed
@cratelyn cratelyn deleted the kate/http-prom.bikeshedding-nits branch February 10, 2026 15:39
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants