与 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 聚会上就我们的经验进行了演讲,并发布了一系列博客文章

我们几乎尝试了所有不同的 Prometheus 运行选项。我们一开始构建了自己的带有嵌入式配置的容器镜像,并将它们与 Grafana 和 Alert Manager 一起运行在一个 Pod 中。我们使用临时的、Pod 内存储来存储时间序列数据。然后,我们将其分解为不同的 Pod,这样我们就不必在每次更改仪表板时都重启 Prometheus(并丢失历史记录)。最近,我们已转向使用上游镜像并将配置存储在 Kubernetes config map 中 - 这会在我们更改配置时由我们的 CI 系统更新。我们在 Prometheus Pod 中使用了一个小的 sidecar 容器来监视配置文件,并在配置文件更改时 ping Prometheus。这意味着我们不必经常重启 Prometheus,无需对存储做任何花哨的事情,也不会丢失历史记录。

定期丢失 Prometheus 历史记录的问题仍然困扰着我们,而可用的解决方案,如 Kubernetes 卷或定期 S3 备份,都有其缺点。加上我们使用 Prometheus 监控 Scope 服务的出色经验,这促使我们构建了一个云原生的、分布式的 Prometheus 版本 - 它可以升级、随意移动并在主机故障中幸存下来而不会丢失历史记录。这就是 Weave Cortex 的诞生过程。

自从切换以来,您看到了哪些改进?

暂且忽略 Cortex,我们特别高兴地看到 HA Alert Manager 的引入;虽然主要是因为它成为了首批使用 Weave Mesh(我们的 gossip 和协调层)的非 Weaveworks 项目之一。

我也特别关注 Fabian 提出的 Kubernetes 服务发现 v2 版本更改 - 这解决了我们在监控 Consul Pod 时遇到的一个棘手问题,我们需要在同一个 Pod 上抓取多个端口。

如果我不提远程写入功能(我自己参与开发的功能),那就太疏忽了。有了这个功能,Prometheus 成为 Weave Cortex 本身的关键组件,抓取目标并将样本发送给我们。

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

对我来说,眼前的未来是 Weave Cortex,Weaveworks 的 Prometheus 即服务。我们在内部广泛使用它,并且开始从中获得相当不错的查询性能。 它目前正在生产环境中与真实用户一起运行,很快我们将引入对警报的支持,并实现与上游 Prometheus 的功能对等。从那时起,我们将进入一个 beta 稳定计划,然后在今年年中全面上市。

作为 Cortex 的一部分,我们开发了一个智能 Prometheus 表达式浏览器,具有 PromQL 的自动完成功能和类似 Jupyter 的笔记本。我们期待着将其展示给更多人,并最终开源。

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