请参与 Prometheus 用户调研(2026 年 3 月版) ,帮助社区确定未来开发工作的优先级!

DigitalOcean 采访

2016年9月14日作者 Brian Brazil

在我们对 Prometheus 用户进行的一系列采访中,DigitalOcean 谈论了他们如何使用 Prometheus。Carlos Amedee 还在 PromCon 2016 上谈到了 推广的社会层面 

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

我叫 Ian Hansen,在平台指标团队工作。DigitalOcean  提供简单的云计算服务。迄今为止,我们已在 13 个区域创建了 2000 万个 Droplets(SSD 云服务器)。我们最近还发布了一款新的块存储产品。

DigitalOcean logo

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

在 Prometheus 之前,我们运行 Graphite OpenTSDB 。Graphite 用于小型应用程序,OpenTSDB 用于通过 Collectd  收集所有物理服务器的指标。Nagios  会从这些数据库中拉取数据以触发警报。我们仍然使用 Graphite,但不再运行 OpenTSDB。

你们为什么决定研究 Prometheus?

我对 OpenTSDB 感到沮丧,因为我负责维护集群在线,但发现很难防范指标风暴。有时,一个团队会推出一个新的(非常“多话”的)服务,这会影响集群的总容量并损害我的 SLA。

我们能够对进入 OpenTSDB 的新指标进行黑名单/白名单管理,但除了组织流程(这很难改变/强制执行)之外,没有很好的方法来防范“多话”服务。其他团队对当时的查询语言和可视化工具感到沮丧。我与 Julius Volz 讨论了推送与拉取指标系统,当我看到我可以控制拉取什么以及拉取频率时,我真的被说服了,想尝试 Prometheus,因为这样我就可以真正控制我的 SLA。此外,我真的非常喜欢它的查询语言。

你们是如何过渡的?

我们之前通过 Collectd 收集指标并发送到 OpenTSDB。在已运行的 Collectd 设置的同时安装 Node Exporter  让我们得以开始尝试 Prometheus。我们还创建了一个自定义的 exporter 来暴露 Droplet 指标。很快,我们与 OpenTSDB 服务实现了功能对等,并开始关闭 Collectd,然后关闭 OpenTSDB 集群。

人们非常喜欢 Prometheus 及其附带的可视化工具。突然间,我的小型指标团队积压了大量工作,我们无法足够快地满足大家的需求。因此,我们没有为人们的服务提供和维护 Prometheus,而是着手创建工具,以便其他团队能够尽可能轻松地运行自己的 Prometheus 服务器,并运行我们在公司中使用的常用 exporter。

一些团队已经开始使用 Alertmanager,但我们仍然保留从现有监控工具中拉取 Prometheus 的概念。

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

我们改进了对虚拟机监控程序(hypervisor)机器的洞察力。我们从 Collectd 和 Node Exporter 中获取的数据大致相同,但对于我们的 Go 语言(golang)开发团队来说,创建新的自定义 exporter 来暴露每个虚拟机监控程序上运行的服务特有的数据要容易得多。

我们正在暴露更好的应用程序指标。学习和教授如何创建可以在以后正确聚合的 Prometheus 指标变得更容易。使用 Graphite 时,很容易创建一种指标,由于点分隔的名称结构不正确,导致以后无法以某种方式聚合。

创建警报比我们以前更快、更简单,而且使用的是熟悉的语言。这使得团队能够为他们了解和理解的服务创建更好的警报,因为他们可以快速迭代。

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

我们正在继续研究如何让 DigitalOcean 的团队尽可能轻松地收集指标。目前,各个团队都在运行自己的 Prometheus 服务器来监控他们关心的事物,这使我们能够快速获得原本无法实现的观测能力。但是,并非每个团队都必须知道如何运行 Prometheus。我们正在研究如何使 Prometheus 尽可能自动化,以便团队可以专注于他们希望在服务和数据库上设置的查询和警报。

我们还创建了 Vulcan ,以便我们能够实现长期数据存储,同时保留我们已围绕其构建工具并培训人员如何使用的 Prometheus 查询语言。