Skip to content

Longer-term plans for the Prometheus x-fork? #2

@geekdave

Description

@geekdave

Hey Alin,

I've been following your posts on the Prometheus Google Group, and comments in the Grafana issue tracker for some time now.

I wanted to start off by offering my gratitude for the time you've taken to carefully and clearly outline the limitations of the Prometheus rate, increase, and delta functions, and for rolling up your sleeves and creating the code to solve these issues.

I was one of the many confused Prometheus/Grafana users who saw my graphs jumping around between refreshes. I'm tracking many slow-moving counters where the exact values of occasional (but rare) spikes are significant and meaningful. Yet, I haven't been able to use them reliably due to these limitations.

The experiments you published really made things click for me. Only when I saw your screenshots of the rate of a slowly-incrementing counter being visualized inaccurately with the stock rate and precisely with your modified xrate function, did it click for me that this was exactly the problem I was having, and the way your function represented the data matched exactly the behavior I had been seeking for months.

Having read the debate you had with the Prometheus maintainers, it seems that a philosophical impasse has been reached, and that these code changes for the moment are unlikely to be merged into a release anytime soon. My intention here is not to take sides, and I do believe that everyone involved is acting with only best intentions in mind. The stance of the maintainers seems to be that Prometheus is only designed to produce approximations of data, and that if exact results are desired, then a logs-based monitoring system should be used. That's certainly a fair line for the maintainers to draw, but I count myself as one of the (growing?) minority who believes that we're so close to having our cake and eating it too, by implementing a monitoring system that can be both precise and cheap to operate.

I wanted to start a discussion here to see how you'd feel about maintaining a long-running fork. Ideally to me, this fork would be:

  1. Maintained by a community of users who share your views, and share in the work of maintaining it
  2. Documented to justify its existence, both in a TL;DR kind of way that's easy for newcomers to grasp, and more thoroughly for those seeking to understand the nitty-gritty. Perhaps a list of "real-world" use cases contributed by the community would be helpful, where the functionality of the fork allowed meaningful results where they were not possible before. I'd be happy to help with this.
  3. Automatically kept in-sync with the upstream project, such that new releases there trigger new builds & releases here.
  4. Open to reconciliation with upstream project. Brian had indicated in a comment that perhaps these changes could be possible in Prometheus 3.0. I'm thinking back to the node/io fork and eventual reconciliation. I'm hoping that with enough friendly diplomacy and community education that perhaps the fork's features could be deemed too valuable not to merge upstream, and that the upstream maintainers concerns could be addressed in a way that is satisfactory to them.
  5. Named in a way that would be distinct from the upstream project, but descriptive enough to be recognizable. Perhaps promx? 😀

If there's a better place to have this discussion, please let me know. Perhaps a separate mailing list could be justified?

Thanks again!
Dave

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions