-
水平可扩展: Cortex 可以跨集群中的多台机器运行,超过单台机器的吞吐量和存储。这使您能够将指标从多个 Prometheus 服务器发送到单个 Cortex 集群,并在一个地方对所有数据运行“全局聚合”查询。
-
高可用性:在集群中运行时,Cortex 可以在机器之间复制数据。这使您可以在机器故障中幸存下来,而不会在图表中出现间隙。
-
多租户: Cortex 可以在单个集群中隔离来自多个不同独立 Prometheus 源的数据和查询,允许不受信任的各方共享同一个集群。
-
长期存储: Cortex 支持 S3、GCS、Swift 和 Microsoft Azure,用于长期存储指标数据。这使您可以将数据持久存储的时间超过任何一台机器的生命周期,并将这些数据用于长期容量规划。
-
全局视图:提供了Prometheus时间序列数据的全局视图,其中包括长期存储的数据,从而大大扩展了PromQL用于分析目的的用途。
Cortex架构
-
Distributor:负责处理来自 Prometheus 的传入样本,Distributor是序列样本写入cortex的入口,会验证每个样本的正确性并确保它在配置的租户限制内,如果特定租户的限制没有被覆盖,则会回退到默认值。验证完毕后将有效样本分成批次并并行发送到多个ingester。
-
Ingester:负责传入的时序序列写入长期后端存储(Storage),并返回序列在在内存中的路径以供查询,传入的序列不会立马写到存储当中,而是保存在内存当中,定期(默认2小时)刷新到存储当中
-
Querier:查询器从Ingester和长期存储中获取时序序列
-
Compactor (required for blocks storage):
-
将给定租户的多个块压缩成一个优化的更大块。这有助于降低存储成本(去重、减少索引大小),并提高查询速度(查询更少的块更快)。
-
保持每个租户的存储桶索引更新。
-
-
Store gateway (required for blocks storage):负责从存储中查询时序序列
-
Alertmanager (optional):负责接受来自 rule 的警报通知,对它们进行去重和分组,并将它们路由到正确的通知渠道
-
Configs API (optional):用于管理 Rulers 和 Alertmanagers 的配置
-
Overrides exporter (optional):支持对每个租户应用限制,以防止任何一个租户使用过多的资源
-
Query frontend (optional):提供查询器的 API 端点,可用于加速读取路径
-
Query scheduler (optional):可将内部队列从Query frontend移动到separate component.中。这使得查询前端和队列数量(查询调度程序)的独立扩展成为可能。
-
Ruler (optional):执行 PromQL 查询以记录规则和警报