Skip to content

Make ruler HA #310

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

Closed
jml opened this issue Mar 1, 2017 · 4 comments
Closed

Make ruler HA #310

jml opened this issue Mar 1, 2017 · 4 comments
Labels
component/rules Bits & bobs todo with rules and alerts: the ruler, config service etc.

Comments

@jml
Copy link
Contributor

jml commented Mar 1, 2017

Currently the ruler is not HA. There's only one instance that runs all the rules. If it goes down, rules are not being processed.

@jml jml self-assigned this Apr 3, 2017
@jml
Copy link
Contributor Author

jml commented Sep 7, 2017

Current plan:

  • store state about how long condition has been firing for somewhere else (probably dynamodb on weaveworks deployment)
  • have rule evaluator that gets sent a rule (group?) and then evaluates it, storing state about firing conditions in thing above, and
  • have single scheduler that sends requests for rule evaluation to evaluators, relying on k8s to do load balancing for us

We'll sort out the config mess later.

Not personally going to do any of this any time soon, although I would personally like to do it. I also think this should wait until #555 is done.

@jml jml removed their assignment Sep 7, 2017
@jml
Copy link
Contributor Author

jml commented Sep 7, 2017

prometheus/prometheus#422 is relevant here. AFAICT, much of the discussion on the ticket assumes that Prometheus's metric store is the only acceptable place to store 'for' state.

Cortex doesn't have that constraint, but ideally the work would be done such that the storage is behind a golang interface, such that the current in-memory approach and a hypothetical TSDB-backed approach would both work, in addition to whatever dynamodb / bigtable thing we do.

@jml
Copy link
Contributor Author

jml commented Sep 7, 2017

Lots of this came up from a conversation I had w/ @juliusv a while back. The good ideas are probably his, the bad ones mine.

@tomwilkie
Copy link
Contributor

Fixed in #1258. Ruler is now horizontally scalable, and rules are sharded using the ring. I believe this should be enough.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/rules Bits & bobs todo with rules and alerts: the ruler, config service etc.
Projects
None yet
Development

No branches or pull requests

2 participants