利用时序数据监控应用性能,在航班机票销售游戏中赢得胜利
作者:Chris Churilo / 产品,开发者
2019年7月3日
导航至
通过一个现实世界的成功故事展示应用性能监控(APM)及其与时序数据的关系的最佳方式之一是介绍Web Shop Fly所使用的应用性能监控解决方案。Web Shop Fly是一家初创公司,已发展成为在五个欧洲国家和俄罗斯运营的主要在线机票旅行代理。该应用性能监控解决方案建立在开源时序数据库InfluxDB之上,用于收集和存储用户交互、应用指标和事件,并在出现错误时发送自动通知。
Web Shop Fly由Bonitoo.io(一家提供端到端研发服务的软件工程公司)独家设计、开发和运营。该门户在一侧与航线和票务提供商集成。在另一侧,该门户展示了具有独特布局的搜索结果,使最终用户轻松规划旅行,并提供仅针对他们定制的选项。该应用针对中欧市场进行了高度优化,但随着其增长,也在进入其他欧洲市场。
<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 为自己设定了以下目标
- 最快的搜索响应:从超过一分钟缩短到 12秒
- 价格准确性: > 95% 以征服客户参与度和信任
- 最佳排序: 可用性 & 时间范围 vs. 成本 & 评分
- 从被动到 主动 UI:通过实时监控网站访客活动,他们能够提出即时吸引人的选项,更好地满足客户搜索和偏好
- 实时 集成在线购买和支持工作流程:所有客户活动都得到监控、收集、分析和报告。如果网站用户遇到问题或需要额外支持,该支持就会立即介入提供帮助。
为了实现这些目标,Web Shop Fly 部署了实时数据处理、监控、集成和可视化。利用获得的可见性,他们致力于提供更好的客户服务响应和更准确的航班和机票信息。
通过清晰的策略和正确的工具集进行竞争
Web Shop Fly 知道他们不能依靠现成的应用监控工具来帮助他们解决问题。相反,他们决定使用合适的工具来对其独特解决方案进行仪表化,这是他们需要走的道路。他们制定了一个坚实的计划,并保持亲力亲为的态度。他们的策略包括使用直接 API、Java 和 JavaScript 仪表化、InfluxDB 和实时警报。
他们意识到实时处理是必要的,因为客户没有耐心,这将使他们能够实现以下差异化 SLA。
- 7秒内搜索航班(而不是30秒以上)
- 提供 最佳价格(高竞争)
- 提供 新鲜价格(搜索价格与最终订单价格)
这些差异化必须在与机票电商生态系统相关联的背景下实现。这包括许多集成——700多家航空公司、内容提供商和聚合 API 的提供者、在线旅行社(OTA)、元搜索引擎 API(例如 Google 飞行)——同时使用众多技术(SOAP、REST、ftp 等)。因此,Web Shop Fly 的一个主要挑战是在价格准确性、搜索时间和成本之间取得平衡——因为每10分钟就有5亿种航班组合发生变化,而航班价格刷新能力有限(因为 API 调用不是免费的)。
Web Shop Fly 通过使用以下方式构建其解决方案,以实时数据洞察、无缝连接和成本效益为基础
- 业务监控(关注正确的航班)
- 智能集成(优化 API 调用成本)
- 缓存
- 应用性能监控
机票电商服务架构
以下是 Web Shop Fly 架构的高级图示,它由 AWS 上的容器化服务和 MongoDB 集群以及 InfluxDB 堆栈组成。
<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执行插件与自定义shell脚本 - 用于一些自定义指标
- InfluxDB JS和Java客户端从应用程序捕获信息
- Kapacitor异常检测和警报
- Chronograf仪表板
- InfluxDB存储所有指标
他们使用InfluxDB能实现什么?
让我们看看他们收集并使用的某些特定指标,以了解该服务的性能。在此示例中,他们试图确定搜索请求对最终用户的性能如何。在下图中,蓝色线条表示特定搜索请求的请求数量,包括航班详情(机场、航空公司、时间/日期)和价格。黄色线条是他们从航空公司或OTA系统获得的相应错误代码。下图显示了搜索响应时间的最大值、平均值和最小值。您可以看到这些指标如何帮助他们通过了解哪些搜索结果有问题以及原因来满足7秒SLA。
<figcaption> 监控定价结果 </figcaption>
他们还能够收集有助于他们了解服务用户采用情况和预订/订单进展情况的指标。对于采用情况,他们有一个功能允许用户通过电子邮件获取“最佳”价格,因此他们监控每天的注册数量以及随时间推移的总采用情况,以及发送的电子邮件数量。至于预订性能,他们查看预订(订单)的数量,失败的订单数量以及生成的错误代码,以确定哪个系统有问题(航空公司、OTA系统等)。
当他们将这种业务视图与他们也进行的典型基础设施监控相结合时,他们就能很好地了解问题发生的地方以及如何快速解决这些问题,以保持预订量。
他们是如何做到这一点的?
如前所述,Web Shop Fly使用Telegraf插件捕获有关其基础设施性能的指标。他们还使用InfluxDB JS和Java客户端从应用程序捕获信息,这些信息使他们了解应用程序的性能以及提供业务指标。以下是一个示例,说明他们如何轻松地将元数据(或标记)添加到他们捕获并插入InfluxDB的事件中。
<figcaption> 为插入到InfluxDB生成的JavaScript代码示例</figcaption>
由于所有指标和事件都存储在InfluxDB中,因此可以轻松地将各种指标关联起来,并在应用程序、业务和基础设施指标之间提供单一视图。尽管他们的应用程序有一些支持其用例的独特功能,但他们仍然能够快速将解决方案部署并运行起来。
Web Shop Fly的用例提供了一个现实例子,说明了成为数据驱动型并实施实时监控的决定如何改变市场定位和竞争优势,并将挑战转化为未开发的机会。要了解更多关于这个用例的信息,请观看网络研讨会。