Cortex架构

这是关于什么的文章?

我有机会调查Prometheus的高可用架构,并在此过程中发现了一个名为Cortex的工具,因此我将简单介绍其工作原理。

Prometheus的高可用结构

如果准备多台普罗米修斯的话就可以了嘛!这样看来,普罗米修斯的冗余化并不是那么容易。

在Timescale(将Postgres扩展为时间序列数据库)的博客中,记录了将Prometheus简单地配置为多个节点时的问题。

我們來思考基於這個的狀態可能是什麼。

假设有两台相同设置的Prometheus。
为了防止数据丢失,我们为这两台Prometheus准备了存储空间。

Prometheus_ha.png

在这种情况下,Prometheus 1和Prometheus 2之间的抓取间隔可能略有不同。因此,可能会在存储中导致数据不一致的可能性。

那么,如果为每个Prometheus准备存储,情况会如何呢?
在这种情况下,我们会面临选择哪个存储来平衡负载的问题。

总结起来,Prometheus的HA配置似乎会出现如下问题。

    • スクレイピングしたデータの重複/不整合

 

    ロードバランシング

Cortex 是什么东西?

查看GitHub时,可以看到以下这些关键词。

    • Horizontally scalable

 

    • Highly available

 

    • Multi-tenant

 

    Long term storage

简而言之,

    • Cortexは可用性が高くて、データも損失しにくいよ

 

    • 複数のPrometheusからデータが収集できるよ

 

    長期のデータ保存ができるよ

他们似乎在说着这样的话。

Cortex架构

这份构图被发布在Github上。
我们将重点介绍Cortex的核心部分,用红色圈起来的部分。

architecture.png

如果对本次说明的部分进行简化,将会形成以下这样的结构。

cortex.png

负载均衡器

很遗憾,LB不包含在Cortex组件中,因此您需要自己构建。

经销商/领事

当Cortex接收到来自Prometheus的数据时,首先会由Distributor进行接收。

分销商的功能是
经销商的作用是
分销者的功能是
分销商的职能是

    • ラベル名が重複したものは最大値を採用する

 

    Ingesterにデータを配布する

这是邻居。

哈希环

数据在Ingester上分发时通过Hash Ring进行数据分割。

想象一下,
将数据形象比作一个甜甜圈。
我们决定用三个Ingester将这个甜甜圈分割开来。

在这个时候,我们需要将甜甜圈分成三等份,
但在此之前,我们会将甜甜圈分成一千份。
第一个碎片会分配给Ingester1, 第二个碎片会分配给Ingester2…… 依次类推,数据会被分成三等份。

在这种情况下,为了作为Ingester1出现故障时的保险,Pi1将分发给Ingester2和Ingester3。

如果你能理解复杂的情况下,先把数据切割并分发给Ingester这件事情,那就好了。

在Cortex的介绍博客中也以这样的方式表达。

这不像把一个饼切成五块那样简单。更像是把一个饼切成一千片,然后每个人都声称自己吃的是其中的第五片。

摄取者

这部分实际上是存储着 Prometheus 数据的部分。
由于通过哈希环将数据分割(并且其他的 Ingester 也拥有相同的数据),所以即使这部分发生故障,数据损失的可能性也较低。
(如果只有一台 Ingester 发生故障,则不会有数据丢失,但是如果多台发生故障就可能会出现问题。)

接收到的数据将会保存在内存中,并以块的形式推送到存储器中。(默认情况下为12小时)

涉及到存储格式的事情,数据的存储方式也有块状式。

分块数据/分块索引 /

可以将块数据分开保存为索引和实际数据。(可选功能)如果不分开保存数据,则索引和实际数据都将保存在块索引中。

以下是可利用的存储选项。

    • Chunk Index

Amazon DynamoDB
Google Bigtable
Apache Cassandra

Chunk Data(オプション)

Amazon DynamoDB
Google Bigtable
Apache Cassandra
Amazon S3
Google Cloud Storage
Microsoft Azure Storage

Cortex的优点/缺点

好处

    データの損失が起こりにくく、可用性が高い

不利因素

    • 構成が複雑でコンポーネント内の個々の構築が難しい

 

    • (Consul/memcached等)

 

    万一、Ingesterに障害が起きた場合、最大12時間分のデータが損失する

请提供不同的资料参考。

以下是对这两个链接的中文本地化的改写:

https://medium.com/weaveworks/what-is-cortex-2c30bcbd247d
Cortex是什么,它是一种用于可扩展和高效处理的开源监控系统,通过将数据存储在云环境中,并提供了基于时间序列的查询和分析功能。

https://github.com/cortexproject/cortex
Cortex是一个开源项目,旨在构建一个水平扩展的、可规模化的云原生监控系统。它提供了多种用于存储、查询和分析时间序列数据的功能和工具。

bannerAds