You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've written some Axum middleware to record the number of times each HTTP request is processed, and I'm hitting problems with actually recording the metrics.
What I've done so far is this:
pub async fn record_metrics<B>(
registry: Extension<prometheus::Registry>,
request: Request<B>,
next: Next<B>,
) -> Response {
let uri = request.uri().to_string();
let response = next.run(request).await;
let counter = CounterVec::new(Opts::new("http_request", "HTTP Requests"), &["uri", "status_code"]).unwrap();
registry.register(Box::new(counter.clone())).unwrap();
counter.with_label_values(&[&uri, response.status().as_str()]).inc();
response
}
And the call to registry.register() returns AlreadyReg on all incoming requests after the first one.
Is there some easy way to get back the already registered metric so that I can increment that instead?
I've looked at calling registry.gather() to try and find it, but can't trivially work out how to find the correct entry in the returned set.
Cheers
The text was updated successfully, but these errors were encountered:
Hitting the same situation with #525. We need to be able to get the registered metric from register function. The ideal usage is whenever I call register with legal input, it returns the registered metric, whenever it is just registered, or registered by other call.
I've written some Axum middleware to record the number of times each HTTP request is processed, and I'm hitting problems with actually recording the metrics.
What I've done so far is this:
And the call to
registry.register()
returnsAlreadyReg
on all incoming requests after the first one.Is there some easy way to get back the already registered metric so that I can increment that instead?
I've looked at calling
registry.gather()
to try and find it, but can't trivially work out how to find the correct entry in the returned set.Cheers
The text was updated successfully, but these errors were encountered: