Live data from Hacker News

Monarch: Google’s Planet-Scale In-Memory Time Series Database

micahlerner.com

41–50 of 133 posts

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database

#41
post #33

Earlier quoted context omitted.

You can set up dist eval similar to how it was done in borgmon but you gotta do it manually (or maybe write an operator to automate). One of Monarchs core ideas is to do that behind the scenes for you

Prometheus' own docs say that distributed evaluation is "deemed infeasible".

Thats just like.. you know.. their opinion, man. https://prometheus.io/docs/prometheus/latest/federation/

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database

#42

Earlier quoted context omitted.

Is it really that different from, say, the way Prometheus supports histogram-based quantiles? https://prometheus.io/docs/practices/histograms/ Granted, it looks like Monarch supports a more cleanly-defined schema for distributions, whereas Prometheus just relies on you to define the buckets yourself and follow the convention of using a "le" label to expose them. But the underlying representation (an empirical CDF) se…

Much different. When you are reporting histograms you can combine them and see the true p50 or whatever across all the individual systems reporting the metric.

Yes. This. Also, displaying histograms in heatmap format can allow you to intuit the behavior of layered distributed systems, caches, etc. Relatedly, exemplars allowed tying related data to histogram buckets. For example, RPC traces could be tied to the latency bucket & time at which they complete, giving a natural means to tie metrics monitoring and tracing, so you can "go to the trace with the problem". This is described in the paper as well.

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database

#43
post #10

Interesting that Google replaced a pull based metric system similar to Prometheus with a push based system... I thought one of the selling points of Prometheus and the pull based dance was how scalable it was?

Prometheus itself has no scalability at all. Without distributed evaluation they have a brick wall.

Prometheus is highly scalable?? What are you talking about??

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database

#44
post #5

A lot of Google projects seem to rely on other Google projects. In this case Monarch relies on spanner. I guess its nice to publish at least the conceptual design so that others can implement it in “rest of the world” case. Working with OSS can be painful, slow and time consuming so this seems like a reasonable middle ground (although selfishly I do wish all of this was source available).

I don't think there's any spanner necessity and iirc monarch existed pre-spanner.

Correct. Spanner is used to hold configuration state, but is not in the serving path.

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database

#45

A huge difference between monarch and other tsdb that isn’t outlined in this overview, is that a storage primitive for schema values is a histogram. Most (maybe all besides Circonus) tsdb try to create histograms at query time using counter primitives. All of those query time histogram aggregations are making pretty subtle trade offs that make analysis fraught.

In my experience, Monarch storing histograms and being unable to rebucket on the fly is a big problem. A percentile line on a histogram will be incredibly misleading, because it's trying to figure out what the p50 of a bunch of buckets is. You'll see monitoring artifacts like large jumps and artificial plateaus as a result of how requests fall into buckets. The bucketer on the default RPC latency metric might not be…

Circonus Histograms solve that by using a universal bucketing scheme. Details are explained in this paper: https://arxiv.org/abs/2001.06561

Disclaimer: I am a co-author.

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database

#46
post #10

Earlier quoted context omitted.

Prometheus itself has no scalability at all. Without distributed evaluation they have a brick wall.

Prometheus is highly scalable?? What are you talking about??

It is not.

It basically does the opposite of what every scalable system does.

To get HA you double you’re number of pollers.

To get scale your queries you aggregate them into other prometheii.

If this is scalability: everything is scalable.

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database

#47

A huge difference between monarch and other tsdb that isn’t outlined in this overview, is that a storage primitive for schema values is a histogram. Most (maybe all besides Circonus) tsdb try to create histograms at query time using counter primitives. All of those query time histogram aggregations are making pretty subtle trade offs that make analysis fraught.

In my experience, Monarch storing histograms and being unable to rebucket on the fly is a big problem. A percentile line on a histogram will be incredibly misleading, because it's trying to figure out what the p50 of a bunch of buckets is. You'll see monitoring artifacts like large jumps and artificial plateaus as a result of how requests fall into buckets. The bucketer on the default RPC latency metric might not be…

My personal opinion is that they should have done a log linear histogram which solves the problems you mention (with other trade offs) but to me the big news was making the db flexible enough to have that data type.

Leaving the world of single numeric type for each datum will influence the next generation of open source metrics db.

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database

#48
post #20

Earlier quoted context omitted.

Can you elaborate? I’ve ran Prometheus at some scale and it’s performed fine.

You pretty quickly exceed what one instance can handle for memory, cpu or both. At that point you don't have any real good options to scale while maintaining a flat namespace (you need to partition).

Sure? Prometheus scales with a federation model, not a single flat namespace.

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database

#49
post #46

Earlier quoted context omitted.

Prometheus is highly scalable?? What are you talking about??

It is not. It basically does the opposite of what every scalable system does. To get HA you double you’re number of pollers. To get scale your queries you aggregate them into other prometheii. If this is scalability: everything is scalable.

I don't understand how the properties you're describing imply that Prometheus isn't scalable.

High Availability always requires duplication of effort. Scaling queries always requires sharding and aggregation at some level.

I've deployed stock Prometheus at global scale, O(100k) targets, with great success. You have to understand and buy into Prometheus' architectural model, of course.

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database

#50
post #33

Earlier quoted context omitted.

Prometheus' own docs say that distributed evaluation is "deemed infeasible".

Thats just like.. you know.. their opinion, man. https://prometheus.io/docs/prometheus/latest/federation/

Prometheus federation isn't distributed evaluation. It "federates" from other nodes onto a single node.

> Federation allows a Prometheus server to scrape selected time series from another Prometheus server

Post reply on HN