jochen-schweizer / express-prom-bundle

express middleware with standard prometheus metrics in one bundle
MIT License
310 stars 68 forks source link

Disable http_request_duration_seconds_bucket and http_request_duration_seconds_count, but keep http_request_duration_seconds_sum #99

Closed wineman3 closed 2 years ago

wineman3 commented 2 years ago

Hello,

Thanks all for helping create this middleware. It's been really useful for my team. My question is:

We use the http_request_duration_seconds_sum metric heavily, but not so much the http_request_duration_seconds_bucket and http_request_duration_seconds_count. Is it possible to disable those metrics but keep tracking the sum?

disjunction commented 2 years ago

@wineman3 As described in the doc, the library provides either a histogram or the summary. So what you see are not just single metrics - but parts of the histogram, see https://prometheus.io/docs/concepts/metric_types/#histogram

I don't see, how the parts you're not interested in are so bad that you'd add any code or complexity to remove them. You may reduce the buckets by providing just one bucket. But that's max effort I would put into it.

Also I wonder, how is the sum alone of any use for you at all? Actually the division of sum by count gives you the average latency. I thought that's the whole point of the histogram. Average latency and corresponding count of hits all delivered with just 2 values. Isn't that cool?

wineman3 commented 2 years ago

Yeah sorry, my mistake. We use sum and count but the bucket/histogram metrics not as much. I can definitely see the value in them, it's more so an effort to reduce cardinality on our organization's Prometheus server.

disjunction commented 2 years ago

well, as I said my solution would be to provide buckets: []. This will result in exactly one bucket (+Inf), which will be the same as count. So you get 3 values instead of 2 you need.

But hey, for an edge case of a guy, who isn't interested in the fact that some of requests are REALLLY slow but are missed because of the averages (this is the point of buckets), it should be good enough.

I'm really reluctant of going away form histogram, cause it's indeed a good practice.

disjunction commented 2 years ago

@wineman3 please forgive my tone in the previous comment. It was an unjustified arrogance on my side.

Closing the issue, hopefully you came to an adequate solution.

wineman3 commented 2 years ago

@disjunction no worries! I really appreciate your help. It’s honestly given me insight to utilize the histogram metrics some more, and I may go that route now, this was just direction from leadership on my team but I may push back to utilize the histogram approach more extensively. Thanks again!