对 Weaveworks 的采访
2017 年 2 月 20 日作者 Brian Brazil
在 Prometheus 用户访谈系列中,Weaveworks 的 Tom Wilkie 讲述了他们如何选择 Prometheus 并在此基础上进行构建。
您能介绍一下 Weaveworks 吗?
Weaveworks 提供 Weave Cloud ,这项服务通过开源项目和软件即服务的结合来“操作化”微服务。
Weave Cloud 包括:
- 使用 Weave Scope 进行可视化
- 使用 Weave Flux 进行持续部署
- 使用容器 SDN Weave Net 进行网络连接
- 使用我们的开源分布式 Prometheus 即服务 Weave Cortex 进行监控。
您可以 免费试用 Weave Cloud 60 天 。有关我们产品的最新信息,请查看我们的 博客 、Twitter 或 Slack (邀请 )。
在使用 Prometheus 之前,您的监控体验是怎样的?
Weave Cloud 是一个全新实现,因此没有以前的监控系统。在之前的工作中,团队使用过 Munin 和 Nagios 等典型工具。Weave Cloud 最初是 Scope 的多租户托管版本。Scope 包含 CPU 和内存使用率等基本监控功能,所以我想可以说我们使用了它。但我们需要一些东西来监控 Scope 本身……
你们为什么决定研究 Prometheus?
我们有一批前 Google SRE 员工,因此拥有丰富的 Borgmon 经验,还有一位前 SoundCloud 员工拥有 Prometheus 经验。我们基于 Kubernetes 构建了服务,并且正在寻找能够“适应”其动态调度特性的东西——因此 Prometheus 是一个不二之选。我们甚至撰写了一系列博客文章,其中第一篇是 为什么 Prometheus 和 Kubernetes 配合得如此出色 。
你们是如何过渡的?
当我们开始使用 Prometheus 时,Kubernetes 服务发现仍然只是一个 PR,因此文档很少。我们运行了一个自定义构建一段时间,然后就这么摸索着,自己解决了问题。最终,我们在 伦敦 Prometheus 聚会 上发表了关于 我们的经验 的演讲,并发表了 系列 博客 文章 。
我们几乎尝试了运行 Prometheus 的所有不同选项。我们首先构建了自己的带有嵌入式配置的容器镜像,将它们与 Grafana 和 Alert Manager 一起运行在一个 Pod 中。我们使用 Pod 内的临时存储来存储时间序列数据。然后我们将这些分解成不同的 Pod,这样我们就不必在每次更改仪表盘时重新启动 Prometheus(并丢失历史记录)。最近,我们已经转向使用上游镜像并将配置存储在 Kubernetes 配置图中——每当我们更改它时,我们的 CI 系统都会更新它。我们在 Prometheus Pod 中使用一个小型边车容器来监视配置文件并在其更改时 ping Prometheus。这意味着我们不必经常重新启动 Prometheus,可以不进行任何花哨的存储操作,并且不会丢失历史记录。
然而,周期性丢失 Prometheus 历史记录的问题一直困扰着我们,而 Kubernetes 卷或定期 S3 备份等现有解决方案都有其缺点。加上我们使用 Prometheus 监控 Scope 服务的出色经验,这促使我们构建了一个云原生、分布式版本的 Prometheus——一个可以升级、重新调度并在主机故障后不丢失历史记录的版本。Weave Cortex 就这样诞生了。
切换后你们看到了哪些改进?
暂时忽略 Cortex,我们特别高兴地看到 HA Alert Manager 的推出;尽管主要是因为它成为 第一个使用 Weave Mesh 的非 Weaveworks 项目之一 ,即我们的八卦和协调层。
我还特别关注 Fabian 的第二版 Kubernetes 服务发现更改——这解决了我们监控 Consul Pod 时遇到的一个尖锐问题,我们需要在同一个 Pod 上抓取多个端口。
如果我不提远程写入功能(我亲自参与开发的功能),那将是我的疏忽。有了它,Prometheus 成为 Weave Cortex 本身的关键组件,抓取目标并将样本发送给我们。
您认为 Weaveworks 和 Prometheus 的未来会怎样?
对我来说,眼前的未来是 Weave Cortex,即 Weaveworks 的 Prometheus 即服务。我们在内部广泛使用它,并且开始从中获得相当不错的查询性能。它现在正在与真实用户一起投入生产,很快我们将引入警报支持并实现与上游 Prometheus 的功能对等。之后我们将进入稳定化的测试计划,然后在年中全面上市。
作为 Cortex 的一部分,我们开发了一个智能的 Prometheus 表达式浏览器,它具有 PromQL 自动补全功能和 Jupyter 风格的笔记本。我们期待将其展示给更多人,并最终将其开源。
我还有一个名为 Loki 的小项目,它将 Prometheus 服务发现和抓取引入 OpenTracing,并使分布式跟踪变得简单而强大。我将在 3 月底在 柏林 KubeCon/CNCFCon 上就此发表演讲 。