继续我们对 Prometheus 用户的一系列访谈,Weaveworks 的 Tom Wilkie 谈论了他们如何选择 Prometheus,以及现在如何在此基础上进行构建。
您能介绍一下 Weaveworks 吗?
Weaveworks 提供 Weave Cloud 服务,该服务通过开源项目和软件即服务相结合的方式“运营”微服务。
Weave Cloud 由以下部分组成:
- 使用 Weave Scope 进行可视化
- 使用 Weave Flux 进行持续部署
- 使用 Weave Net(容器 SDN)进行网络连接
- 使用 Weave Cortex 进行监控,我们开源的、分布式的 Prometheus 即服务。
您可以免费试用 Weave Cloud 60 天。有关我们产品的最新信息,请查看我们的博客、Twitter 或 Slack (邀请)。
您在使用 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 配置映射中 - 每当我们更改配置时,我们的 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 服务发现的第二版更改 - 这解决了我们监控 Consul Pod 时遇到的一个严重问题,我们需要在同一个 Pod 上抓取多个端口。
如果我不提远程写入功能(我自己参与开发的功能),那我将是失职。有了这个功能,Prometheus 就成为了 Weave Cortex 本身的关键组件,它可以抓取目标并将样本发送给我们。
您认为 Weaveworks 和 Prometheus 的未来会怎样?
对我来说,眼前的未来是 Weave Cortex,Weaveworks 的 Prometheus 即服务。我们在内部广泛使用它,并且开始从中获得相当不错的查询性能。它现在正在生产环境中与真实用户一起运行,不久我们将引入对警报的支持,并实现与上游 Prometheus 的功能对等。从那里,我们将在今年年中进入稳定化的 beta 计划,然后再正式发布。
作为 Cortex 的一部分,我们开发了一个智能的 Prometheus 表达式浏览器,它具有 PromQL 的自动完成功能和类似 Jupyter 的笔记本。我们期待着将它展示给更多人,并最终将其开源。
我还有一个名为 Loki 的小副项目,它将 Prometheus 服务发现和抓取引入 OpenTracing,并使分布式跟踪变得简单而健壮。我将在 3 月底在柏林举行的 KubeCon/CNCFCon 上就此发表演讲。