> Local storage is explicitly not production ready at this time.
https://cortexmetrics.io/docs/getting-started/getting-starte...
But I want a scale-out, multitenant implementation of Prometheus with local storage that's ready for prod. What are my options then? VictoriaMetrics?
Having said that, both Thanos and Cortex have experimental local-storage modes that are pretty good. You could also try them for now while they get production ready.
Disclosure: I work on the TSDB underlying M3 (M3DB) at Uber. Still worth checking out though!
The vmstorage component in VictoriaMetrics Server - is it RAID0-like (stripping) or RAID1-like (mirroring)?
https://github.com/VictoriaMetrics/VictoriaMetrics/tree/clus...
[1] https://github.com/VictoriaMetrics/VictoriaMetrics/blob/mast...
As for data replication, VictoriaMetrics offloads this task to the underlying storage, since the replication is hard to make properly [2]. Proper replication must be able to perform the following tasks additionally to copying the data to multiple nodes:
* To heal the data (aka to return back replication factor) after a node becomes permanently unavailable. The healing process mustn't degrade cluster performance and it must properly handle other cases mentioned below.
* To gracefully handle temporary unavailability of nodes.
* To survive network partitioning when nodes are temporarily split into multiple isolated subnetworks.
* To handle data corruption.
* To continue accepting new data at normal rate when a part of nodes are unavailable.
* To continue serving incoming requests with acceptable latency when a part of nodes are unavailable.
* To replicate data among multiple availability zones (AZ), so the cluster should continue accepting new data and serving requests if a single AZ becomes unavailable.
I'm unsure whether popular systems that claim replication support can handle all the cases mentioned above. The only system that seems to handle these cases properly is GCP persistent disks based on Colossus storage [3]. That's why it is recommended storing VictoriaMetrics data on GCP persistent disks.
[1] https://en.wikipedia.org/wiki/Shared-nothing_architecture
[2] https://github.com/VictoriaMetrics/VictoriaMetrics/tree/clus...
[3] https://medium.com/google-cloud/persistent-disks-and-replica...
The local Cortex storage works pretty well but we have a very high bar for production worthiness. Right now I'd recommend using Bigtable of DynamoDB, and if you're on premise Cassandra. In the future the block storage will allow you to run minio.
Interestingly, it looks like Cortex's support for local storage and object stores comes from using Thanos's storage engine. So once it's production ready in Thanos it will probably be production-ready in Cortex shortly thereafter.
https://cortexmetrics.io/docs/operations/blocks-storage/
I think for Cortex your safest storage options now are Bigtable, DynamoDB, or Cassandra.
What you said is correct and makes sense. Though, I would suspect either choice works with any S3 compatible API that can run on local storage, but I know that isn't necessarily what's meant by "local storage".
Batteries included.
The former means free or charge or expressing praise or a compliment.
The latter means disparate things go well together and enhance each others' qualities.
there's a lot of good questions, and some confusion in this thread. here is my view. note: i'm definitely biased; am the co-founder/ceo at grafana labs.
- at grafana labs we are huge fans of prometheus. it has become the most popular metrics backend for grafana. we view cortex and prometheus as complementary. we are also very active contributors to the prometheus project itself. in fact, cortex vendors in prometheus.
- you can think of cortex as a scale-out, multi-tenant, highly available "implementation" of prometheus itself.
- the reason grafana labs put so much resources into cortex is because it powers our grafana cloud product (which offers a prometheus backend). like grafana itself, we are also actively working on an enterprise edition of cortex that is designed to meet the security and feature requirements of the largest companies in the world.
- yes, cortex was born at weaveworks in 2016. tom wilkie (vp of product at grafana labs) co-created it while he worked there. after tom joined grafana labs in 2018, we decided to pour a lot more resources into the project, and managed to convince weave.works to move it to the cncf. this was a great move for the project and the community, and cortex has come a long long way in the last 2 years.
once again, a big hat tip to everyone who made this release possible. a big day for the project, and for prometheus users in general!
[edit: typos]