使用时间序列进行应用性能监控,在机票销售游戏中获胜

导航至

展示应用性能监控 (APM) 的价值及其与时间序列数据关系的最佳方式之一是通过真实的成功案例。在此,我们介绍 Web Shop Fly 使用的应用性能监控解决方案,这是一家初创公司,已发展成为一家主要的在线航空公司机票旅行社,业务遍及五个以上的欧洲国家和俄罗斯。该应用性能监控解决方案构建在开源时间序列数据库 InfluxDB 之上,用于收集和存储用户交互以及应用指标和事件,并在发生错误时发送自动通知。

Web Shop Fly 完全由 Bonitoo.io(一家提供端到端研发服务的软件工程公司)设计、开发和运营。该门户网站一方面与航线和机票供应商集成。另一方面,该门户网站呈现具有独特布局的搜索结果,使最终用户可以轻松规划行程,并呈现专为他们量身定制的选项。该应用程序针对中欧市场进行了高度优化,并且随着其增长,也正在进入其他欧洲市场。

使用时间序列进行应用性能监控 - Web Shop Fly<figcaption> Web Shop Fly:一个系统,在 6 个国家拥有 5 个独立门户</figcaption>

Web Shop Fly 使用来自 Google Analytics、Hotjar 和 AWS Cloudwatch 的标准指标,并通过从其应用程序、基础设施和业务的工具中收集的指标来增强这些指标,以了解用户采用率、预订健康状况、基础设施和网络健康状况以及性能。这种全面的可见性帮助他们改进用户体验,快速响应异常情况并确保航班数据的质量。

Web Shop Fly 面临的挑战

Web Shop Fly 希望成为在线机票的顶级销售商,但面临严峻的挑战

  • 拥挤的市场和全球竞争
  • 可用的框架不允许差异化
  • 容易出现价格错误的环境
  • 客户容易失去兴趣

实时监控的市场机会

为了克服行业和市场挑战,Web Shop Fly 确定了一个市场机会,即通过改善其航班搜索和购买体验来吸引客户。这需要实时了解用户活动以确定用户偏好——这只能通过实时监控获得。Web Shop Fly 为自己设定了以下目标

  1. 最快的搜索响应:从超过一分钟到 12 秒 以内
  2. 价格准确性:> 95% 以赢得客户参与度和信任
  3. 最佳排序:可用性和时间范围与成本和评分
  4. 从被动 UI 转向 主动 UI:通过实时监控在线网站访问者的活动,他们能够建议即时有吸引力的选项,以更好地满足客户的搜索和偏好
  5. 实时 在线购买和支持工作流程的集成:所有客户活动都经过监控、收集、分析并在报告中呈现。如果网站用户遇到问题或需要额外支持,支持人员会立即介入提供帮助。

为了实现这些目标,Web Shop Fly 部署了实时数据处理、监控、集成和可视化。利用获得的可见性,他们开始提供更好的客户服务响应和更准确的航班和机票信息。

通过清晰的战略和正确的工具集进行竞争

Web Shop Fly 知道他们不能依赖现成的应用程序监控工具来帮助他们应对挑战。相反,他们确定使用正确的工具来检测其独特的解决方案是他们需要采取的道路。他们制定了可靠的计划并保持了亲力亲为的方法。他们的策略包括使用直接 API、Java 和 JavaScript 工具、InfluxDB 和实时警报。

他们意识到实时处理是必要的,因为客户没有耐心,并且这将使他们能够实现以下 SLA 作为差异化因素。

  1. 7 秒 内搜索航班(而不是 30 多秒)
  2. 提供 最优惠的价格 (竞争激烈)
  3. 提供 最新鲜的价格 (搜索价格与最终订单价格)

这些差异化因素必须在机票电子商店的生态系统的背景下实现。这包括许多集成——700 多家航空公司、内容提供商和 API 聚合提供商、在线旅行社 (OTA)、元搜索引擎 API(即 Google flights)——同时使用多种技术(SOAP、REST、ftp 等)。因此,Web Shop Fly 面临的主要挑战是在价格准确性、搜索时间和成本之间取得平衡——考虑到每 10 分钟有 5 亿个航班组合发生变化,并且航班价格刷新能力有限(因为 API 调用不是免费的)。

Web Shop Fly 通过以下方式构建了基于实时数据洞察、无缝连接和成本效率的解决方案

  • 业务监控(关注正确的航班)
  • 智能集成(优化 API 调用成本)
  • 缓存
  • 应用性能监控

机票电子商店服务架构

以下是 Web Shop Fly 架构的高级图表,该架构由容器化服务和 AWS 上的 MongoDB 集群以及 InfluxDB 堆栈组成。

Web Shop Fly 架构 - 时间序列<figcaption> 使用 InfluxDB 堆栈的 Web Shop Fly 架构</figcaption>

使用时间序列进行应用性能监控

为了进行实时时间序列数据摄取和处理,Web Shop Fly 选择 InfluxDB,因为它专为处理海量数据、执行所需操作以及以所需格式呈现数据而构建,并且具有用于警报的实时功能。

InfluxDB 时间序列平台帮助 Web Shop Fly 非常快速且轻松地创建了实时监控系统。Web Shop Fly 使用 InfluxDB 时间序列平台来监控基础设施指标、应用程序指标和业务级指标。他们使用 InfluxDB 进行摄取和存储,Telegraf 代理进行指标收集,Kapacitor 进行警报,以及 Chronograf 进行数据可视化。堆栈的所有这些组件都已准备就绪,可以帮助他们检测其独特的环境。

Web Shop Fly 架构中的监控组件包括

  • Telegraf 开箱即用 (OOTB) 插件 - 用于基础设施指标
  • Telegraf Exec 插件,带有自定义 shell 脚本 - 用于某些自定义指标
  • InfluxDB JS 和 Java 客户端,用于捕获来自其应用程序的信息
  • Kapacitor 异常检测和警报
  • Chronograf 仪表板
  • InfluxDB 用于存储所有指标

他们使用 InfluxDB 能够实现什么?

让我们看一下他们正在收集和使用的一些特定指标,以了解该服务如何运行。在本例中,他们试图确定最终用户的搜索请求的执行情况。在下面的图中,蓝线表示特定搜索请求的请求数,其中包括航班详细信息(机场、航空公司、时间和日期)和价格。黄线是他们从航空公司或 OTA 系统获得的相应错误代码。下图显示了按响应时间的最大值、平均值和最小值分隔的搜索响应时间。您可以看到这些指标如何帮助他们满足 7 秒搜索 SLA,让他们知道哪个搜索结果有问题以及原因。

监控定价事件 - Web Shop Fly 仪表板<figcaption> 监控定价结果</figcaption>

他们还能够收集指标,帮助他们了解用户对服务的采用情况以及预订/订单的进展情况。对于采用率,他们有一项功能允许用户通过电子邮件接收“最优惠”价格,因此他们监控每天的注册数量和一段时间内的总体采用率以及发送的电子邮件数量。至于预订绩效,他们会查看收到的预订(订单)数量、他们有多少失败的订单以及生成的错误代码,以确定哪个系统出现故障(航空公司、OTA 系统等)。

当他们将业务视图与他们也做的典型基础设施监控相结合时,他们可以很好地了解问题发生在哪里以及如何快速解决这些问题以保持预订的持续进行。

他们是如何做到的?

如前所述,Web Shop Fly 使用 Telegraf 插件来捕获有关其基础设施性能的指标。他们还使用 InfluxDB JS 和 Java 客户端来捕获来自其应用程序的信息,这些信息告诉他们有关其应用程序的性能,并为他们提供业务指标。以下示例显示了他们可以多么轻松地将元数据(或标签)添加到他们正在捕获并插入到 InfluxDB 中的事件。

插入 InfluxDB 的 JavaScript 代码示例 - Web Shop Fly<figcaption> 为插入 InfluxDB 生成的 JavaScript 代码示例</figcaption>

由于所有指标和事件都存储在 InfluxDB 中,因此可以轻松地链接各种指标,并提供跨应用程序、业务和基础设施指标的单一视图。即使他们的应用程序具有一些独特的功能来支持他们的用例,他们也能够快速启动并运行解决方案。

Web Shop Fly 的用例提供了一个真实的示例,说明成为数据驱动型企业并实施实时监控的决定如何改变市场定位和竞争优势,并将挑战转化为未开发的机遇。要了解有关此用例的更多信息,请观看网络研讨会