对 Weaveworks 的采访

在我们的 Prometheus 用户系列采访中,来自 Weaveworks 的 Tom Wilkie 讲述了他们如何选择 Prometheus 以及目前如何在其基础上进行构建。

您能介绍一下 Weaveworks 吗?

Weaveworks 提供 Weave Cloud,这是一项通过结合开源项目和软件即服务来“运营化”微服务的服务。

Weave Cloud 包括

您可以免费试用 Weave Cloud 60 天。有关我们产品的最新信息,请查看我们的博客TwitterSlack (邀请)。

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

Weave Cloud 是从零开始实施的,因此没有之前的监控系统。在之前的工作中,团队使用过 Munin 和 Nagios 等典型工具。Weave Cloud 最初是一个多租户、托管版本的 Scope。Scope 包含对 CPU 和内存使用等基本监控功能,所以我想可以说我们使用过它。但是我们需要一个工具来监控 Scope 本身...

你们为什么决定考察 Prometheus?

我们有一些前 Google SRE 员工,他们对 Borgmon 有丰富的经验,还有一名前 SoundClouder 对 Prometheus 也有经验。我们在 Kubernetes 上构建了服务,并且正在寻找能够与其动态调度特性“契合”的工具——所以选择 Prometheus 是水到渠成的事情。我们甚至写了一系列博文,其中Prometheus 和 Kubernetes 为何如此契合是第一篇。

您是如何过渡的?

当我们开始使用 Prometheus 时,Kubernetes 服务发现功能还只是一个 PR,因此文档也很少。我们运行了一段时间的自定义构建版本,有点摸索着前进,自己解决问题。最终,我们在伦敦 Prometheus meetup 上就我们的经验进行了演讲,并发表了一系列博文

我们尝试了几乎所有不同的 Prometheus 运行方式。我们最初构建了带有嵌入配置的自己的容器镜像,将它们与 Grafana 和 Alert Manager 一起在一个 Pod 中运行。我们使用临时的 Pod 内存储来存储时间序列数据。然后我们将此拆分到不同的 Pod 中,这样每次更改仪表盘时就不必重新启动 Prometheus(并丢失历史记录)。最近,我们改用上游镜像并将配置存储在 Kubernetes config map 中——每当我们更改它时,我们的 CI 系统都会更新它。我们在 Prometheus Pod 中使用一个小的 sidecar 容器来监视配置文件,并在其更改时 ping Prometheus。这意味着我们不必经常重新启动 Prometheus,可以避免为存储做任何花哨的事情,并且不会丢失历史记录。

然而,定期丢失 Prometheus 历史记录的问题一直困扰着我们,可用的解决方案,如 Kubernetes volumes 或定期 S3 备份,都有其缺点。再加上我们使用 Prometheus 监控 Scope 服务的绝佳经验,这促使我们构建了一个云原生、分布式的 Prometheus 版本——一个可以在升级、重新调度和宿主机故障时不会丢失历史记录的版本。Weave Cortex 就这样诞生了。

切换后您看到了哪些改进?

先不提 Cortex,我们对 HA Alert Manager 的引入感到特别兴奋;尽管主要是因为它是首批使用 Weave Mesh 的非 Weaveworks 项目之一,Weave Mesh 是我们的 gossip 和协调层。

我还特别关注 Fabian 对第二版 Kubernetes 服务发现功能的改动——这解决了我们在监控 Consul Pods 时遇到的一个棘手问题,当时我们需要抓取同一个 Pod 上的多个端口。

如果我不提 remote write 功能(这是我自己参与开发的功能),那就失职了。有了它,Prometheus 成为了 Weave Cortex 本身的关键组成部分,负责抓取目标并将样本发送给我们。

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

对我来说,近期是 Weave Cortex,Weaveworks 的 Prometheus 即服务。我们在内部广泛使用它,并且开始从中获得相当不错的查询性能。它现在正在为实际用户提供生产服务,很快我们将引入告警支持并与上游 Prometheus 实现功能对等。之后,我们将在年中全面上市之前进入稳定化的 Beta 计划。

作为 Cortex 的一部分,我们开发了一个智能的 Prometheus 表达式浏览器,支持 PromQL 自动补全和 Jupyter 式笔记本。我们期待将其提供给更多人使用,并最终将其开源。

我还有一个名为 Loki 的小型副业项目,它将 Prometheus 的服务发现和抓取功能引入到 OpenTracing 中,使分布式追踪变得简单而可靠。我将在 3 月底的 KubeCon/CNCFCon 柏林会议上就此发表演讲。