README

Cortex Logo

CI GoDoc Go Report Card Slack

Cortex: horizontally scalable, highly available, multi-tenant, long term storage for Prometheus.

Cortex provides horizontally scalable, highly available, multi-tenant, long term storage for Prometheus.

  • Horizontally scalable: Cortex can run across multiple machines in a cluster, exceeding the throughput and storage of a single machine. This enables you to send the metrics from multiple Prometheus servers to a single Cortex cluster and run "globally aggregated" queries across all data in a single place.
  • Highly available: When run in a cluster, Cortex can replicate data between machines. This allows you to survive machine failure without gaps in your graphs.
  • Multi-tenant: Cortex can isolate data and queries from multiple different independent Prometheus sources in a single cluster, allowing untrusted parties to share the same cluster.
  • Long term storage: Cortex supports Amazon DynamoDB, Google Bigtable, Cassandra, S3, GCS and Microsoft Azure for long term storage of metric data. This allows you to durably store data for longer than the lifetime of any single machine, and use this data for long term capacity planning.

Cortex is a CNCF incubation project used in several production systems including Weave Cloud and Grafana Cloud. Cortex is primarily used as a remote write destination for Prometheus, with a Prometheus-compatible query API.

Documentation

Read the getting started guide if you're new to the project. Before deploying Cortex with a permanent storage backend you should read:

  1. An overview of Cortex's architecture
  2. A guide to running Cortex
  3. Information regarding configuring Cortex
  4. Steps to run Cortex with Cassandra

For a guide to contributing to Cortex, see the contributor guidelines.

Further reading

To learn more about Cortex, consult the following talks and articles.

Recent talks and articles
Previous talks and articles

Getting Help

If you have any questions about Cortex:

Your feedback is always welcome.

For security issues see https://github.com/cortexproject/cortex/security/policy

Community Meetings

The Cortex community call happens every three weeks on Thursday at 03:30pm – 04:15pm UTC to get calendar invite join the google groups.

Meeting notes are held here.

Hosted Cortex (Prometheus as a service)

There are several commercial services where you can use Cortex on-demand:

Weave Cloud

Weave Cloud from Weaveworks lets you deploy, manage, and monitor container-based applications. Sign up at https://cloud.weave.works and follow the instructions there. Additional help can also be found in the Weave Cloud documentation.

Instrumenting Your App: Best Practices

Grafana Cloud

The Cortex project was started by Tom Wilkie (Grafana Labs' VP Product) and Julius Volz (Prometheus' co-founder) in June 2016. Employing 6 out of 8 maintainers for Cortex enables Grafana Labs to offer Cortex-as-a-service with exceptional performance and reliability. As the creators of Grafana, Loki, and Tempo, Grafana Labs can offer you the most wholistic Observability-as-a-Service stack out there.

For further information see Grafana Cloud documentation, tutorials, webinars, and KubeCon talks. Get started today and sign up here.

Amazon Managed Service for Prometheus (AMP)

Amazon Managed Service for Prometheus (AMP) is a Prometheus-compatible monitoring service that makes it easy to monitor containerized applications at scale. It is a highly available, secure, and managed monitoring for your containers. Get started here. To learn more about the AMP, reference our documentation and Getting Started with AMP blog.

Expand ▾ Collapse ▴

Directories

Path Synopsis
cmd
ca
e2e
pkg
api
chunk/encoding
This file was taken from Prometheus (https://github.com/prometheus/prometheus).
This file was taken from Prometheus (https://github.com/prometheus/prometheus).
ingester/client
nolint // Ignore all warnings in this file.
nolint // Ignore all warnings in this file.
util/fakeauth
Package fakeauth provides middlewares thats injects a fake userID, so the rest of the code can continue to be multitenant.
Package fakeauth provides middlewares thats injects a fake userID, so the rest of the code can continue to be multitenant.
tools