Scalefastr 访谈

2018年2月8日作者 Brian Brazil

继续我们与 Prometheus 用户进行的系列访谈,Scalefastr 的 Kevin Burton 谈到了他们如何使用 Prometheus。

您能介绍一下您自己以及 Scalefastr 的业务吗?

我叫 Kevin Burton,是 Scalefastr  的首席执行官。我的背景是分布式系统,之前我经营过 Datastreamer,这是一家构建了 PB 级分布式社交媒体爬虫和搜索引擎的公司。

在 Datastreamer,我们遇到了基础设施方面的可扩展性问题,并基于 Debian、Elasticsearch、Cassandra 和 Kubernetes 构建了一个高性能集群。

我们发现许多客户也在为基础设施苦苦挣扎,令我惊讶的是,他们在 AWS 和 Google Cloud 上托管大量内容的花费之高。

我们不断评估在云上运行的成本,对我们而言,托管成本将是目前支付费用的 5-10 倍。

我们决定基于开源和云原生技术,如 Kubernetes、Prometheus、Elasticsearch、Cassandra、Grafana、Etcd 等,推出一个新的云平台。

我们目前托管了几个 PB 级规模的客户,并将在本月软启动我们的新平台。

在使用 Prometheus 之前,您的监控体验是怎样的?

在 Datastreamer,我们发现指标是能够快速迭代的关键。我们拥抱了平台的可观测性,并集成了 Dropwizard Metrics  等工具,以便于为我们的平台开发分析。

我们构建了一个基于 KairosDB、Grafana 和我们自己的(简单的)可视化引擎的平台,这个平台运行了相当长一段时间,效果很好。

我们看到的 KairosDB 的主要问题是其采用率以及客户对 Prometheus 的需求。

此外,Prometheus 的优点在于项目本身或社区实现的导出器(exporter)的支持。

使用 KairosDB 时,我们经常难以构建自己的导出器。相比 Prometheus,KairosDB 已经存在导出器的可能性相当低。

例如,KairosDB 支持 CollectD,但在 Debian 中支持不佳,并且 CollectD 存在实际的错误,导致它无法在生产环境中可靠地工作。

使用 Prometheus,您可以相当快地启动和运行(系统相当容易安装),并且您的平台有现成导出器的可能性相当高。

此外,我们预计客户应用程序将开始标准化 Prometheus 指标,一旦有了像 Scalefastr 这样的托管平台,将其集成到标准化和支持的产品中。

了解您的应用程序性能至关重要,而 Prometheus 的高可扩展性是实现这一点的必要条件。

你们为什么决定研究 Prometheus?

起初我们很想知道其他人是如何监控他们的 Kubernetes 和容器应用程序的。

容器的主要挑战之一是它们可以快速出现和消失,留下需要分析的日志和指标数据。

一旦我们看到人们在生产环境中使用 Prometheus,并结合了容器优先的架构——以及对导出器和仪表板的支持——我们便清楚应该将 Prometheus 作为我们的分析后端进行研究。

One of Scalefastr's Grafana dashboards

你们是如何过渡的?

对于我们来说,过渡是相对无痛的,因为 Scalefastr 是一个全新的环境。

架构在很大程度上是新的,限制因素非常少。

我们的主要目标是部署在裸机上,但要在现有和标准化的硬件之上构建云功能。

我们的想法是让集群中的所有分析都由 Prometheus 提供支持。

我们为客户提供自己的“管理”基础设施,包括 Prometheus、Grafana、Elasticsearch 和 Kibana,以及 Kubernetes 控制平面。我们使用 Ansible 来编排这个系统,Ansible 负责初始机器设置(ssh、核心 Debian 包等)和基本配置。

然后我们部署 Prometheus、客户配置所需的所有导出器,以及 Grafana 的仪表板。

我们发现的一个问题是,Grafana.com 上的一些仪表板是为 Prometheus 1.x 编写的,未能顺利迁移到 2.x。事实证明,2.x 系列中只缺少少数函数,其中许多只需要进行一些微小的调整。此外,一些仪表板是为早期版本的 Grafana 编写的。

为了帮助解决这个问题,我们本周宣布了一个项目,旨在 标准化和改进 Prometheus  的仪表板,包括 Cassandra、Elasticsearch、操作系统,以及 Prometheus 本身。我们将其开源并于上周 发布到 Github 

我们希望这能让其他人更容易迁移到 Prometheus。

我们希望改进的一点是自动将其与我们的 Grafana 后端同步,并将这些仪表板上传到 Grafana.com。

我们还发布了 Prometheus 配置,以便标签能与我们的 Grafana 模板正确配合。这允许您使用下拉菜单选择更具体的指标,如集群名称、实例名称等。

Using template variables in Grafana dashboards

切换后你们看到了哪些改进?

易于部署、高性能和标准化的导出器使我们能够轻松切换。此外,后端配置相对容易(基本上就是守护进程本身),并且没有太多活动的组件,这使得这是一个轻松的决定。

您认为 Scalefastr 和 Prometheus 的未来会怎样?

目前我们直接在裸机上部署 Elasticsearch 和 Cassandra。我们正在努力将它们容器化,直接运行在 Kubernetes 之上,并致力于使用容器存储接口 (CSI) 来实现这一点。

在此之前,我们需要让 Prometheus 服务发现正常工作,这是我们尚未尝试过的。目前我们通过 Ansible 部署和配置 Prometheus,但这显然无法扩展(甚至无法与 Kubernetes 一起工作),因为随着我们工作负载的变化,容器会不断出现和消失。

我们还在努力改进标准仪表板和警报。我们想添加的一项功能(可能是作为容器)是支持基于霍尔特斯冬季预测的警报。

这实际上将使我们能够在严重性能问题发生之前就预测到它们。而不是等到出现问题(例如磁盘空间不足)才采取行动纠正。

在某种程度上,Kubernetes 可以帮助解决这个问题,因为我们可以根据一个水位标记向集群添加节点。一旦资源利用率过高,我们就可以进行自动扩展。

我们对 Prometheus 的未来感到非常兴奋,特别是现在我们正在推进 2.x 系列,并且 CNCF 协作似乎也在顺利进行。