-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Various FluxMetric suggested improvements #1242
Comments
@jkschneider I'd be interested on your feedback on the last point. are prefix like that generally a good or bad idea? does using tag names that are very generic, like |
my interpretation is that
We use a My original thought against implementing this metric for un-named sequences was that there would already be a lot of noise. Furthermore with any sequence that gets a The problem I see with attempting to record that on a per-subscriber basis is that it means we need a differentiating tag per subscriber, and we don't really have anything meaningful to provide for that.
I'd like for someone with experience on these tools to provide something, but I definitely don't feel enough at ease with Grafana to come up with something like that. Need a contribution 😄
Doable, but implies to duplicate all the code (including fuseable versions) for
Good idea!
For the meter names, I'm not sure (see my previous comment above). For tags, I think it makes more sense indeed 👍 |
- split Mono implementation from Flux implementation - Mono doesn't record onNext delays nor requests - rename meter 'reactor.subscribe.to.terminate' to 'reactor.flow .duration' - remove 'reactor' prefix from tag names and rename some: - 'reactor.termination.type' to 'status' - 'reactor.sequence.name' to 'flow' - 'reactor.sequence.type' to 'type' - duration meter tagged with `status == ERROR` is lazily created to also be tagged with the Exception's class name
My 2 cents: Produce latency buckets...I really try to encourage core libraries to just use a vanilla Removing reactor_* prefix.I agree you should remove the prefix from tag keys. I do think it is important to consistently apply Examples:
|
@smaldini regarding e013678 in the fused case, shouldn't we capture the negotiated request mode and do edit: see PR #1250 |
I had a chance to stress the metrics story in more length and I would like to propose a few improvements:
Produce latency buckets, maybe with distribution support in MeterFilter, might need a reactor scoped metricsRegistry to add into the global registry. This should be available as an argument like spring-boot in order to macro monitor latency distribution for a sequence (Mono/Flux) or for onNext (Flux). It looks like that in boot (note the "le" tag):
http_client_requests_seconds_bucket{clientName="localhost",method="GET",status="IO_ERROR",uri="/details/{ticker}",le="12.884901886",} 254.0
I think request metrics are not correct as we use totals (requestCounter). It should be computed per Subscriber then added to the distribution, e.g. keeping track of the interval between 2 requests with the requested volume as a tag so metrics query can compute asked data/second.
Add arguments / or any other mean to exclude some calculation (not too fine grained)
Document/Provide json template to get started, e.g. like https://github.com/micrometer-metrics/micrometer/tree/master/scripts/spring-dash
Mono might not need all metrics, in fact it does only need one: mono_duration. The malformed metrics can be useful too separately. But no need for onNext delay.
It would be interesting to tag the error like spring boot with
exception=ClassName
Rework used labels to remove reactor_* prefix. See below an example prometheus trace:
Could be
The text was updated successfully, but these errors were encountered: