专栏首页CNCFCortex:多租户、可横向扩展的Prometheus即服务

Cortex:多租户、可横向扩展的Prometheus即服务

作者:By Luc Perkins

Prometheus是用于监控和可观察性的标准开源解决方案之一。 Prometheus于2012年起源于SoundCloud,迅速获得广泛采用,后来成为首批CNCF项目之一,第二个毕业项目(仅次于Kubernetes)。它被许多具有前瞻性思维的公司用于生产,包括DigitalOcean、Fastly和Weaveworks等重量级公司,并拥有自己的年度会议PromCon。

Prometheus:强大但有意地限制

Prometheus之所以成功,部分原因是核心Prometheus服务器及其各种补充程序,如Alertmanager、Grafana和导出生态系统,形成了一个引人注目的端到端解决方案,解决了一个至关重要的难题。但是,Prometheus并没有提供你期望从一个成熟的“即服务”平台中获得的一些功能,例如多租户、身份验证和授权以及内置的长期存储。

Cortex于9月作为沙箱项目加入CNCF,是一个开源的Prometheus即服务平台,旨在填补这些空白,从而提供完整、安全、多租户的Prometheus体验。我会在以下说很多关于Cortex的,首先,让我们短暂地游览更熟悉的Prometheus世界。

为何选择Prometheus?

作为CNCF开发者的倡导者,我有机会熟悉Prometheus社区和Prometheus作为工具(主要研究文档和Prometheus Playground)。由于各种原因,它的巨大成功对我来说并不奇怪:

  • Prometheus实例易于部署和管理。我特别喜欢近乎即时的配置重新加载,以及所有Prometheus组件都提供静态二进制文件。
  • Prometheus提供了简单易用的指标展示格式,可以轻松编写自己的指标导出器。这种格式甚至通过OpenMetrics项目(最近也加入了CNCF沙箱)变成了开放标准。
  • Prometheus提供了简单,但功能强大的基于标签的查询语言PromQL,用于处理时间序列数据。我觉得PromQL非常直观。

为何选择Prometheus即服务?

早期,Prometheus的核心工程师做出明智的决定,让Prometheus保持简洁和可组合。从一开始,Prometheus设计成可以很好地完成一小部分工作,并与其他可选组件无缝协作(而不是让Prometheus负担过重,增加了一系列硬编码功能和集成)。以下是Prometheus设计范围外的一些内容:

  • 长期存储 - 单个Prometheus实例提供持久存储时间序列数据,但它们不能作为分布式数据存储系统,不提供像具有跨节点复制和自动修复等功能。这意味着,耐久性保证仅限于单台机器。幸运的是,Prometheus提供了一个远程写入API,可用于将时间序列数据传输到其他系统。
  • 全局数据视图 - 如上面要点所述,Prometheus实例充当隔离数据存储单元。Prometheus实例可以联邦,但这会给Prometheus设置增加很多复杂性,而且Prometheus不是设计为分布式数据库。这意味着,没有简单的途径来实现时间序列数据的单一,一致的“全局”视图。
  • 多租户 - Prometheus本身没有的租户概念。这意味着,它无法对特定于租户的数据访问和资源使用配额等事物,提供任何形式的细粒度控制。

为何选择Cortex?

作为Prometheus即服务平台,Cortex充分填补所有这些关键缺口,为即使是最苛刻的监控和可观察性使用案例,提供了完整的开箱即用解决方案。

  • 它支持四种开箱即用的长期存储系统:AWS DynamoDB、AWS S3、Apache Cassandra和Google Cloud Bigtable。
  • 它提供了Prometheus时间序列数据的全局视图,其中包括长期存储中的数据,极大地扩展了PromQL用于分析目的的有用性。
  • 它的核心支持多租户。通过Cortex的所有Prometheus指标都与特定租户相关联。

Cortex的架构

Cortex具有基于服务的设计,其基本功能分为单个用途组件,可以独立扩展:

  • Distributor - 使用Prometheus的远程写入API处理由Prometheus实例写入Cortex的时间序列数据。传入数据会自动复制和分片,并且并行发送到多个Cortex Ingester。
  • Ingester - 从distributor节点接收时间序列数据,然后将该数据写入长期存储后端,压缩数据到Prometheus块以提高效率。
  • Ruler - 执行规则并生成警报,将它们发送到Alertmanager(Cortex安装包括Alertmanager)。
  • Querier - 处理来自客户端(包括Grafana仪表板)的PromQL查询,对短期时间序列数据和长期存储中的样本进行抽象。

这些组件每一个都可以独立管理,这是Cortex可扩展性和运营的关键。你可以在下面看到Cortex及与其交互的系统的基本图表:

如图所示,Cortex“完成”Prometheus监控系统。要适应现有的Prometheus安装,你只需重新配置Prometheus实例以远程写入Cortex群集,Cortex将处理其余部分。

多租户

单租户系统往往适用于小型用例和非生产环境,但对于拥有大量团队、用例和环境的大型组织而言,这些系统变得站不住脚(没有双关语意)。为了满足这些大型组织的严格要求,Cortex不是作为附加组件或插件提供多租户,而是作为头等功能。

多租户被编织到Cortex的结构中。从Prometheus实例到达Cortex的所有时间序列数据,都在请求元数据中标记所属于的特定租户。从那里,该数据只能由同一个租户查询。警报也是多租户,每个租户都可以使用Alertmanager配置设定自己的警报。

从本质上讲,每个租户都有自己的系统“视图”,其自身以Prometheus为中心的世界。如果你以单租户的方式使用Cortex,你可以随时扩展到无限大的租户群。

用例

经过几年的发展,Cortex的用户倾向于分为两大类:

  1. 服务供应商构建托管的管理平台,提供监控和可观察性组件。例如,如果你正在构建像Heroku或Google App Engine这样的平台即服务产品,Cortex使你能够为平台上运行的每个应用程序,提供Prometheus提供的全部功能,并处理每个应用程序( 或者每个帐户或客户)作为系统的单独租户。Weave Cloud和Grafana Labs使用Cortex使客户能够充分利用Prometheus,他们是综合云平台的示例。
  2. 企业拥有许多内部客户,运行自己的应用程序、服务和“堆栈”。EA和StorageOS是受益于Cortex的大型企业的例子。

Cortex、Prometheus的生态系统和CNCF

Cortex有一些非常引人注目的技术特性,但在当前的行业氛围下,我也认为指出其开源特性也很重要:

  • Cortex使用Apache 2.0许可授权,并由CNCF支持。
  • 它仅与其他Apache 2.0 CNCF项目紧密耦合,没有与闭源、专有或特定于供应商技术的强链接。
  • 项目合作者包括像Goutham Veeramachaneni和Tom Wilkie这样的Prometheus核心维护者,来自Weaveworks、Grafana Labs、Platform9等公司的工程师,以及其他大量投资于监控和可观察性领域的工程师。
  • Cortex已经投入生产,为Weave Cloud和Grafana Cloud提供支持,这两个云产品(和核心贡献者)的成功关键取决于Cortex未来的发展轨迹。

通过在CNCF沙箱中添加Cortex,现在CNCF保护伞下有三个与Prometheus相关的项目(包括Prometheus本身和OpenMetrics)。我们知道监控和可观察性是云原生范式的重要组成部分,我们很高兴看到围绕Prometheus社区有机出现的一些核心基础的持续融合。Cortex项目正在大力推进这项工作,我很兴奋Prometheus生态系统的Prometheus即服务分支成型。

本文分享自微信公众号 - CNCF(lf_cncf),作者:CNCF官微

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用Prometheus Operator监控集群

    据Sysdig发布的容器报告,容器以及如Kubernetes等编排工具的使用增长了51%以上,大家开始将工作负载在集群中进行托管并管理。鉴于集群中短暂的状态,对...

    CNCF
  • CNCF网研会:利用普罗米修斯、Jaeger和Cortex等洞察Istio

    Istio集成了丰富的工具,可以为您的微服务环境添加跟踪、遥测、日志记录和其它功能。本次会议重点讨论大量的工具(包括几个CNCF项目)如何共同工作以提供Isti...

    CNCF
  • Prometheus在京东开源项目ChubaoFS中的使用

    在我的印象中,普罗米希修斯是古希腊神话中的最具智慧之神,不仅创造了人类,还给人类带来了火。同样Prometheus项目也是非常优秀的项目,很早就引起了我们的兴趣...

    CNCF
  • Kubernetes上的“火眼金睛”——Prometheus的安装实录

    Kubernetes是目前最为流行、成为事实标准的容器集群管理平台,为容器化应用提供了集群化部署运行、自动资源调度,和动态水平伸缩等一系列完整功能。虽然Kube...

    JFrog杰蛙科技
  • java应用监控之prometheus核心组件

    上一篇我们对prometheus做了一个简单的介绍,介绍了prometheus的优势以及和其他监控系统的对比,今天分享一下prometheus的核心组件。

    用户4361942
  • Prometheus监控学习笔记之Prometheus监控简介

    Prometheus(普罗米修斯)是一个开源系统监控和警报工具,最初是在SoundCloud建立的。它是一个独立的开放源码项目,并且独立于任何公司。不同于传统的...

    Jetpropelledsnake21
  • mysql双机热备份的实现步骤

    MySQL 提供了数据库的同步功能,这对我们实现数据库的冗灾、备份、恢复、负载均衡等都是有极大帮助的。本文描述了常见的同步设置方法。

    一见
  • 阿里开源框架egg.js入门与实战

    Eggjs是一个基于Koajs的框架,所以它应当属于框架之上的框架,它继承了Koajs的高性能优点,同时又加入了一些约束与开发规范,来规避Koajs框架本身的...

    用户1462769
  • go 学习笔记之有意思的变量和不安分的常量

    首先希望学习 Go 语言的爱好者至少拥有其他语言的编程经验,如果是完全零基础的小白用户,本教程可能并不适合阅读或尝试阅读看看,系列笔记的目标是站在其他语言的角度...

    雪之梦技术驿站
  • VMware扩展磁盘大小

    卡尔曼和玻尔兹曼谁曼

扫码关注云+社区

领取腾讯云代金券