前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cortex:多租户、可横向扩展的Prometheus即服务

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

作者头像
CNCF
发布2019-12-05 13:58:16
2.2K0
发布2019-12-05 13:58:16
举报
文章被收录于专栏:CNCFCNCF

作者: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即服务分支成型。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Prometheus 监控服务
Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档