If we decide to make extra scrape metrics optional, the extra scrape metrics should not be a flag, but a per-job option (with a global value) changeable a runtime.
If you think they should be optional, it's better to open an issue in the repository to discuss it. Le ven. 12 nov. 2021, 15:34, [email protected] <[email protected]> a écrit : > I recently stumbled upon a ticket that mentioned adding something behind a > feature flag, then in Prometheus 3.x making that the default and removing > the flag. > This approach might work well for changes in behaviour or default > configuration values, but it doesn't sound like it would work for flags > like ----enable-feature=extra-scrape-metrics and I wonder if those would > always stay under --enable-feature flag. > I guess there are a few options: > - promote it to a dedicated flag > - expose those extra metrics under a different path (/metrics/debug ?) so > user still needs to opt-in, it's just that the mechanism is different > - enable them if /metrics endpoint receives some query params > (/metrics?extra-scrape-metrics=true), just a different version of the above > - always produce extra metrics and document how to drop it if it's too much > > I don't think there's anything wrong with having that under a feature > flag, but I do agree that having excessive number of feature flags means > that each user runs a slightly different version of prometheus, with a > unique set of "features" enabled, which won't improve usability and might > be confusing (which flags should I enable and which I shouldn't?). > Plus I don't think it's unique to this one use case to have some metrics > that are considered "debug" or "optional", so there might be a benefit in > some best practice how to expose such metrics when writing instrumentation > code. > > On Friday, 3 September 2021 at 14:11:37 UTC+1 [email protected] wrote: > >> Having feature flags for extra features that a user needs act on to use >> anyway does feel unnecessary from my POV. I feels more like "I acknowledge >> this is beta" box tick. >> I think it mostly makes sense if one is enabling something that changes >> existing behaviour (and so can break existing use cases), possibly with the >> assumption that the flag will be removed in the next major release and the >> behind-the-flag behaviour would become default. >> >> I do think flags might also make sense for enabling extra metrics that >> can be expensive (like scrape timeouts), mostly because the alternative >> would be to have a release notes line announcing new metrics and advising >> to drop those via relabelling if not used - this only works when user is >> upgrading to that release and if they read notes, for any new install it's >> likely to be missed. >> >> On Friday, 3 September 2021 at 08:44:34 UTC+1 Julien Pivotto wrote: >> >>> Dear developers, >>> >>> TL;DR: I'd like to be able to mark feature as experimental in the >>> documentation without feature flag. >>> >>> >>> >>> >>> I am bringing to your attention a discussion we're having in github >>> issue https://github.com/prometheus/prometheus/pull/9248. That github >>> issue is about having atan2 support in Prometheus as a binary operator. >>> >>> Because it is strange for users to have atan written as foo atan2 bar, >>> instead of atan2(foo, bar), I've asked to mark the feature as >>> experimental. Should we in the future add syntactic sugar or add binary >>> ops to functions, we would be able to do so. >>> >>> I also did not want a feature flag for this. In my vision, and that's >>> how I acted as maintainer, feature flags should be used when: >>> >>> - We change an existing behaviour. >>> => PromQL query range semantics, with @ delimiter >>> => Expanding env variables for external labels >>> - We introduce very risky features, that introduce additional memory / >>> storage requirements. >>> => Remote write receiver >>> => Exemplars >>> => Snapshots on shutdown >>> => Additional scrape metrics (next to up etc) >>> >>> However, I am not a believer of feature-flags driven Prometheus. >>> >>> Feature flags have been introduced in Prometheus 2.25. Since then, we >>> have added a few new features without feature flag: >>> >>> - body_size_limit in scrape configs >>> - setting timeout and interval via relabeling. >>> >>> In general, I think it does not benefit users to launch Prometheus with >>> lots of feature flags. Our users should be able to assess the risk they >>> take by using a feature, without always requiring feature flags. >>> Especially for relatively small features like atan2. There is no >>> intention to drop atan2 in Prometheus 2.x anyway, just we might find a >>> better way to call it. >>> >>> I try to draw a line between what's a useful feature flag, and where >>> just marking experimental in documentation is fine. Prometheus is very >>> conservative anyway, and I value the continuity of our features, >>> including the "experimental" ones. >>> >>> Just to give you an idea, if we had a very strong feature flags policy >>> in Prometheus, here is what it could have looked like, based on >>> >>> https://prometheus.io/docs/prometheus/latest/stability/#api-stability-guarantees >>> >>> --enable-feature=promql-at-modifier >>> --enable-feature=expand-external-labels >>> --enable-feature=promql-negative-offset >>> --enable-feature=remote-write-receiver >>> --enable-feature=exemplar-storage >>> --enable-feature=body-size-limit >>> --enable-feature=relabel-intervals >>> --enable-feature=remote-read >>> --enable-feature=https-basic-auth >>> --enable-feature=web-ui >>> --enable-feature=service-discovery-k8s >>> --enable-feature=service-discovery-consul >>> --enable-feature=remote-write-retry-on-429 >>> --enable-feature=target-limit >>> >>> And that's what I want to avoid. >>> >>> >>> Concretely, my proposal is to continue to be able to mark features as >>> experimental in the documentation, without requiring feature flags. >>> Feature flags can be introduced when some conditions are met, to the >>> appreciation of the maintainers. In some cases (breaking changes or >>> extra unexpected resource consumption), they are mandatory. >>> >>> -- >>> Julien Pivotto >>> @roidelapluie >>> >> -- > You received this message because you are subscribed to the Google Groups > "Prometheus Developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/prometheus-developers/564a3e70-0f3a-44b4-88c4-1a1bc70d49f9n%40googlegroups.com > <https://groups.google.com/d/msgid/prometheus-developers/564a3e70-0f3a-44b4-88c4-1a1bc70d49f9n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Prometheus Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/prometheus-developers/CAFJ6V0rqLxzJDBsVy2amCStjTBhU7J%3DES9_nP70ED4E-5sAAug%40mail.gmail.com.

