Add client_requests timing module to metrics#802
Merged
michaeldjeffrey merged 3 commits intomainfrom May 6, 2024
Merged
Conversation
dd36b9d to
db53596
Compare
bbalser
approved these changes
May 4, 2024
- Add a timing span to anything that can be instrumented and returns a Result.
Example:
```ignore
let client = GatewayClient::new(channel);
client.info(req)
.with_timing("iot_fetch_info")
.await?;
```
This will result in a prometheus metric
>> client_request_duration_seconds{name = "iot_fetch_info", quantile="xxx"}
- Install the `ApiTimingLayer`.
Adding `.with_span_events(FmtSpan::CLOSE)` to a regular format layer will
print the timing spans to stdout as well.
Example:
```ignore
tracing_subscriber::registry()
.with(tracing_subscriber::fmt::layer().with_span_events(FmtSpan::CLOSE))
.with(metrics::client_requests::client_request_timing_layer("histogram_name"))
.init();
```
- Remove unused `install_metrics` function, replace with nested
`install` function that `start_metrics` delegates to. This allows us to
start metrics in tests without needing to make a `Settings` struct.
* Update metrics crate Also bumps metrics-exporter-prometheus. The biggest change from 0.21 -> 0.22 is in this PR metrics-rs/metrics#394 * allow for versions greater than 0.22 this may change if the api to metrics changes _again_ before a major version.
Makes the values hide a little bit less in the code
1e098e5 to
1ba4026
Compare
jeffgrunewald
approved these changes
May 6, 2024
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.
Questions:
metricscrate version than oracles?metricsto latest api style and putting a>=0.22on the dep.Add a timing span to anything that can be instrumented and returns a Result.
Example: ```ignore let client = GatewayClient::new(channel);
client.info(req) .with_timing("iot_fetch_info") .await?; ```
This will result in a prometheus metric
Install the
ApiTimingLayer.Adding
.with_span_events(FmtSpan::CLOSE)to a regular format layer will print the timing spans to stdout as well.Example:
ignore tracing_subscriber::registry() .with(tracing_subscriber::fmt::layer().with_span_events(FmtSpan::CLOSE)) .with(metrics::client_requests::client_request_timing_layer("histogram_name")) .init();Remove unused
install_metricsfunction, replace with nestedinstallfunction thatstart_metricsdelegates to. This allows us to start metrics in tests without needing to make aSettingsstruct.