Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(app): Backend frame count metrics #3308

Merged
merged 8 commits into from
Nov 20, 2024
Merged

feat(app): Backend frame count metrics #3308

merged 8 commits into from
Nov 20, 2024

Commits on Nov 20, 2024

  1. feat(app): Backend response frame count metrics

    this introduces a new tower middleware for Prometheus metrics, used for
    instrumenting HTTP and gRPC response bodies, and observing (a) the
    number of frames yielded by a body, and (b) the number of bytes included
    in body frames.
    
    this middleware allows operators to reason about how large or small the
    packets being served in a backend's response bodies are.
    
    a route-level middleware that instruments request bodies will be added
    in a follow-on PR.
    
     ### 📝 changes
    
    an overview of changes made here:
    
    * the `linkerd-http-prom` has a new `body_data` submodule. it exposes
      `request` and `response` halves, to be explicit about which body is
      being instrumented on a `tower::Service`.
    
    * the `linkerd-http-prom` crate now has a collection of new
      dependencies: `bytes` is added as a dependency in order to inspect the
      data chunk when the inner body yields a new frame. `futures-util` and
      `http-body` are added as dev-dependencies for the accompanying test
      coverage.
    
    * body metrics are affixed to the `RouteBackendMetrics<L>` structure,
      and registered at startup.
    
    Signed-off-by: katelyn martin <[email protected]>
    cratelyn committed Nov 20, 2024
    Configuration menu
    Copy the full SHA
    b8c1867 View commit details
    Browse the repository at this point in the history
  2. review: Inline attribute to service passthrough

    Signed-off-by: katelyn martin <[email protected]>
    cratelyn committed Nov 20, 2024
    Configuration menu
    Copy the full SHA
    0da2152 View commit details
    Browse the repository at this point in the history
  3. review: Inline attribute to body passthrough

    continuing this theme of inlining, we inline the passthrough methods on
    `Body` as well.
    
    Signed-off-by: katelyn martin <[email protected]>
    cratelyn committed Nov 20, 2024
    Configuration menu
    Copy the full SHA
    670143c View commit details
    Browse the repository at this point in the history
  4. review: Box <RecordBodyData as Service>::Future values

    Signed-off-by: katelyn martin <[email protected]>
    cratelyn committed Nov 20, 2024
    Configuration menu
    Copy the full SHA
    0d4a41b View commit details
    Browse the repository at this point in the history
  5. review: rename get() to metrics()

    Signed-off-by: katelyn martin <[email protected]>
    cratelyn committed Nov 20, 2024
    Configuration menu
    Copy the full SHA
    5a1a978 View commit details
    Browse the repository at this point in the history
  6. review: simplify RecordBodyData<S> response

    Signed-off-by: katelyn martin <[email protected]>
    cratelyn committed Nov 20, 2024
    Configuration menu
    Copy the full SHA
    f147343 View commit details
    Browse the repository at this point in the history
  7. Update ResponseBody metrics to use a histogram

    Signed-off-by: Oliver Gould <[email protected]>
    olix0r authored and cratelyn committed Nov 20, 2024
    Configuration menu
    Copy the full SHA
    da6e10c View commit details
    Browse the repository at this point in the history
  8. refactor(tests): feature gate frame size histogram assertions

    see:
    
    * prometheus/client_rust#242
    * prometheus/client_rust#241
    
    for now, refactor this test so that it gates all use of the (proposed)
    `sum()` and `count()` accessors behind a temporary feature gate.
    
    Signed-off-by: katelyn martin <[email protected]>
    cratelyn committed Nov 20, 2024
    Configuration menu
    Copy the full SHA
    33f5f60 View commit details
    Browse the repository at this point in the history