Houzz 如何使用 Grafana Loki 和 Grafana Tempo 提升可观测性、MTTR 和 MTTI
Houzz 由 Adi Tatarko 和 Alon Cohen 夫妇作为副业创立,其使命是为家居改造和设计创造最佳体验。这个想法源于他们在 2009 年改造自己的家时遇到的困境。他们苦恼于缺乏资源来帮助他们清晰地构想他们的家园,并选择合适的专业人士将其变为现实。
在他们把房子变成家后,他们又把 Houzz 打造成了家居改造巨头。
十多年来,Houzz 已成为家居改造和设计的领先平台,为人们提供从开始到结束改善家园所需的一切。在 Houzz 上,人们可以找到设计灵感,研究和雇用家居专业人士,以及购买产品来完成他们的项目。对于家居专业人士,Houzz Pro 提供一站式软件解决方案,赋能行业专业人士脱颖而出,赢得客户,并高效盈利地管理他们的项目。
如今,Houzz 社区由全球数百万房主、家居设计爱好者和家居装修专业人士组成。
使用 Grafana Loki 和 Grafana Tempo 从单体架构改造为微服务
随着公司规模的扩大,他们也发现自己正在将技术栈从单体架构转变为微服务,这促使 DevOps 团队寻找合适的工具来提高日志可见性和搜索能力。
但他们原有的可观测性工具无法跟上大量新数据的涌入,这使得 DevOps 和开发团队在需要时查找日志成为一个持续存在的问题。结果是,当生产系统出现问题时,团队花费越来越多时间试图找出正确的数据来查看,而不是从一开始就解决根本问题。这阻碍了团队生产力。
“作为一名 DevOps 工程师,我更喜欢 CLI 和终端屏幕。当我们迁移到微服务世界后,这不再是一个合适的解决方案了,而且我研究的大多数替代日志解决方案都提供了太多信息,很难找到我正在寻找的确切日志。” Houzz 的 DevOps Lead Yoram Kruvi 说道。
Kruvi 说他正在寻找一种“保持简单的方法”,并在 Grafana Loki 中找到了答案。
在我们开始使用 Loki 之前,日志搜索是一个挑战。Grafana 提供的一站式体验使我们能够将日志数据与应用负载和基础设施指标进行交叉引用,这节省了我们的时间,并使我们更容易找到相关的日志。
Yoram Kruvi,DevOps Lead,Houzz
除了解决 Grafana Loki 现在处理的日志问题之外,向微服务的转变也给 Houzz 带来了网络可观测性问题。作为应对,他们选择了 Grafana Tempo 作为他们的追踪工具。
“一旦有多个服务互相通信,理解延迟在哪里增加以及找到可以改进的地方就变得更加困难,这时 Grafana Tempo 就派上用场并解决了这个问题,” Houzz 的 DevOps 工程师 Roman Vogman 说。“除此之外,调试时拥有多个工具和 UI 并在它们之间跳转会使事情变得更复杂。将所有功能集中在一个工具中,比如 Grafana Tempo,简化了整个流程。”
Vogman 很快指出,Grafana Loki 和 Grafana Tempo 也可以协同工作。 “能够在同一屏幕上将 Grafana Loki 中找到的日志直接连接到 Grafana Tempo 中的追踪,简化了调试过程。” Vogman 说。
随着最近发布的 Grafana Mimir(世界上最具扩展性、最高性能的开源时间序列数据库), Vogman 表示他渴望深入研究 Grafana Labs LGTM 技术栈的另一个组件,希望为公司带来更多价值。
Grafana Loki:Houzz 日志管理的“绝佳选择”
由于 Prometheus 的查询语言 PromQL 是 Grafana Loki 查询语言 LogQL 的基础,因此添加 Loki 来管理日志就显得非常自然。
“我已经使用 Grafana 和 Prometheus 很长时间了。当 Loki 发布时,它看起来是一个绝佳的选择,是我们日志管理需求的自然一步,” Kruvi 说道。
更好的是,实现 Grafana Loki 非常容易。实际上,团队只用了五分钟就通过 Helm chart 在 Kubernetes 集群中运行起来了。除了入门简单之外,以下是 Houzz 开箱即用拥抱 Grafana Loki 的原因:
- 快速发展的社区一部分 “如果我有一个问题可以通过 Google 搜索得到答案,那简直太值了。” Kruvi 说。
- 成本效益高 “Grafana Loki 存储日志的方式比我们之前的解决方案经济得多,” Kruvi 说道。
- Kubernetes 原生 “拥有为云原生技术构建的工具对我们来说是巨大的胜利,” Kruvi 说道,并补充说“这也促进了日志入门的简便性。”
- 关联指标和日志 “能够在同一页面上将日志与来自不同数据源的其他指标关联起来,并拥有 Grafana 提供的‘单一视图’,当数据从如此分散的来源涌入时,这简直是‘游戏规则的改变者’,” Kurvi 补充道。
Grafana Tempo:DIY 演示
传统上,Houzz 一直使用 Zipkin 服务器处理追踪数据和分析。但当 Grafana Tempo 发布时,DevOps 团队基于 Grafana Loki 的表现,决定尝试这个新的开源解决方案。
他们没有失望。就像 Grafana Loki 一样,使用 Grafana Tempo 非常快速和容易。团队进行了内部 PoC 并立即取得了成功,但仍需要管理层的认可才能继续推进。因此,他们将目光转向在实际前端服务组件上进行 Grafana Tempo 的现场演示,并通过快速展示他们的请求在哪里浪费时间,以及如何使用这些数据比以前更快地缓解这些问题,给他们的管理层留下了深刻印象。
此外,如果出现任何问题,Grafana Tempo 周围日益壮大且充满热情的开源社区被证明是无价的。“当 Grafana Tempo 相对较新时,我们决定尝试它,当时对于我们遇到的各种问题,文档并不多,” Vogman 说。“当我们遇到设置困难或调整配置时,我们经常向社区求助,并且在几个小时内就能得到每个问题的答案。考虑到我们团队分布在全球各地,这尤其令人印象深刻。”
DevOps 团队强调的 Grafana Tempo 的更多设计细节:
- 开源且易于使用 “一旦你掌握了一个组件的架构,开始使用 LGTM 技术栈的下一个部分就会非常自然。” Vogman 指出。
- 成本效益高,因为它只需要对象存储即可运行。
- 与 Grafana Loki 深度集成 “你可以轻松地从指标跳转到日志再到追踪,然后再跳回来,” Vogman 说。
但除了 Grafana Tempo 本身的强大功能之外,Houzz 意识到它的价值还得益于 Grafana Labs 秉持的“大帐篷”理念的支持。 “我们喜欢使用多种来源的选项,例如 OpenTelemetry、Zipkin 和 Jaeger 一起使用,这让开发团队可以自由选择最适合他们的工具,” Kruvi 说道。
大改造:可观测性篇
借助 Grafana Loki,Houzz 团队现在可以在 Grafana 中可视化日志数据并追踪随时间变化的趋势。Grafana Loki 只需按下按钮即可运行最新查询,过滤来自不同来源的日志,提供日志浏览器按日志标签进行搜索,并轻松切换时区,鉴于他们作为全球领导者的地位,这一点对 Houzz 来说很重要。
对于 Grafana Tempo,该工具在整个企业中很容易被采用。这是因为它能够追踪系统延迟,深入查看每个请求的详细信息,并通过 span 可视化检测回归和改进点。
开发人员还很看重 Grafana Tempo 如何让用户在不同数据源和不同数据类型之间跳转,并且它作为一个容器化应用程序可用,可以在 Kubernetes 等编排引擎上运行。
对于 DevOps 团队来说,因为有了 Grafana,当掌握全局信息时,我们能够更快地响应,并能更好地支持整个 Houzz 团队。我们不再需要依赖多个系统。有了 Grafana,所有数据和指标都在同一个系统中,以相同的视图呈现在我们眼前。
Yoram Kruvi,DevOps Lead,Houzz
采用 Grafana 工具对 Houzz 在多个层面都非常有益。首先,Houzz 在计算时间和存储方面的花费减少了。此外,MTTR 和 MTTI 也降低了。
“将所有内容都在 Grafana 体系下进行管理,处理事件的时间减少了,因为我们无需在不同系统之间跳转来查找根本原因,” Vogman 说。“我们还能够修复许多问题领域,从而防止实际事件的发生。”
“通过关联 Prometheus、Tempo 和 Loki 的数据,我们能够准确找出系统中的实际问题,进行端到端跟踪,修复它们,并立即看到恢复和改进的效果,” Kruvi 说道。
Loki 和 Tempo 采用后,Houzz 改进的最显著标志也许是其平台的正常运行时间和稳定性提高,以及开发者生产力的飞跃。随着开发者投入到检测生产问题的时间减少,这不仅提高了客户满意度,也提升了开发者满意度。“我们开发人员的反馈是他们喜欢 Grafana 的简洁性,” Kruvi 说道。“此外,填补之前的盲点不仅增强了开发人员的自豪感,还为 Houzz 的客户提供了更好的平台用户体验。”