Amazon CloudWatch Internet Monitor - 即时检测 ISP 故障并可视化用户影响

CloudWatch Internet Monitor 是一项以 ISP / 城市 / ASN 为单位,持续监控通过互联网访问应用程序的终端用户的可用性和性能的服务。它利用 AWS 全球网络的观测数据,一体化地提供从检测性能劣化到辅助判断 DNS 路由切换的功能。

需要从终端用户视角进行监控的背景

以往的 CloudWatch 指标,主要监控的是 EC2 的 CPU 使用率、ALB 的延迟等 AWS 基础设施一侧的指标。然而,无论应用程序运行得多么正常,只要用户与 AWS 区域之间的互联网路径出现问题,终端用户就会遇到延迟或超时。ISP 的故障、海底光缆的损坏、特定地区的 BGP 路由异常等,在 AWS 管理范围之外发生的网络问题并不少见。ISP 的故障有时会影响到许多用户。CloudWatch Internet Monitor 是为填补这一盲点而设计的服务,它利用 AWS 在全球网络中收集的连接数据,将终端用户实际感受到的互联网质量可视化。从与终端用户之间的互联网路径一侧捕捉服务器端指标难以发现的问题,这就是这项服务的思路。

利用 AWS 全球网络观测数据的机制

使用 Internet Monitor 时,不需要在用户一侧部署自有的探针或代理。AWS 将在全球网络中观测到的连接数据,用于监控互联网的运行状况和可用性。Internet Monitor 将这些观测数据与用户指定的 AWS 资源(CloudFront 分配、VPC、WorkSpaces 目录等)的流量模式进行对照。由此推算来自特定 ISP 或城市的访问在往返时间(RTT)和可用性方面的变化。例如,当经由某个城市的特定 ISP 的访问的 RTT 比平常的值增加时,Internet Monitor 会将这一恶化作为运行状况事件进行通知。AWS 表示,可以将诊断互联网问题所需的时间从数天缩短到数分钟。只需登记监控对象资源,就会开始无代理且接近实时的监控,这一点使得运维负担很低。

运行状况事件的检测逻辑与阈值设计

Internet Monitor 会在 0-100 的范围内计算监控对象流量的可用性分数和性能分数,当这些分数低于设定的阈值时生成运行状况事件。阈值有默认值,可以根据应用程序的 SLA 进行自定义。重要的是,Internet Monitor 不仅计算全球整体的分数,还会按城市 / ISP(ASN)的每种组合计算分数。即使整体的可用性很高,只要经由特定城市的特定 ISP 的访问下降,就会将这种局部的劣化作为运行状况事件捕捉下来。运行状况事件中还包含受影响流量的估计值,因此可以区分影响仅限于部分用户的问题和波及广泛范围的故障,从而判断应对的优先级。通过与 EventBridge 集成,还可以将运行状况事件的发生联动到 Lambda 或 SNS,构建自动化的应对流程。阈值设得过严会增加噪声,过松则会延迟检测,因此在初期运维中,最好先观察一段时间基线后再进行调整。

支撑 DNS 路由切换判断的可视化

Internet Monitor 提供的流量洞察,直接关系到多区域架构中 DNS 路由的切换判断。例如,在 2 个区域组成主动-主动架构时,如果通往其中一个区域的路径上特定 ISP 的性能劣化,就需要有用来判断是否应将相应用户的流量转向另一个区域的依据。在 Internet Monitor 的控制台中,受影响的城市 / ISP 组合、估计流量和 RTT 的增加幅度会在地图上可视化。此外,也可以考虑将 Internet Monitor 的运行状况事件作为判断 Route 53 路由切换的依据的架构。Azure 也有处理全球流量的 Azure Front Door,而 Internet Monitor 可以在与 CloudFront 和 Route 53 相同的 AWS 中进行设置。即使是手动切换,也可以在 Internet Monitor 的控制面板中确认劣化的范围和严重程度后再判断,因此更容易避免不必要的故障转移。

成本结构与监控对象资源的设计

Internet Monitor 既不需要预付费用,也不需要长期合同。费用由按每个监控资源计算的金额和按每个城市网络(客户端的位置与 ASN 的组合)计算的金额 2 部分组成,日志和额外的指标另外按 CloudWatch 的常规价格收费。监控的流量比例和监控的城市网络数量的上限,可以按每个监控器进行设置。要控制成本,不是将所有资源汇集到 1 个监控器中,而是只针对业务关键型的应用程序创建监控器,这样做很有效。例如,将面向内部的管理界面和面向客户的生产服务分别用不同的监控器管理,只在生产服务的监控器上设置严格的阈值和告警联动。1 个监控器中可以登记多个资源,对于 VPC,则是每个区域各登记 1 个。将 CloudFront 分配作为监控对象后,会分析经由该分配的流量的地理分布和性能。

运维设计的要点以及与其他监控服务的分工

要有效地运用 Internet Monitor,重要的是明确它与 CloudWatch 其他监控功能之间的分工。Synthetics 定期执行探针,主动监控特定端点的响应,RUM 则通过嵌入浏览器的 JavaScript 测量真实用户的体验。Internet Monitor 与它们不同,是利用从 AWS 网络基础设施获得的观测数据,被动地监控整个互联网路径的健康状况。将三者结合起来,可以监控基础设施层、应用程序层和用户体验层这 3 个层次。在实际运维中,可以考虑这样的流程:将运行状况事件经由 EventBridge 通知到 Slack 或 PagerDuty,由值班工程师确认影响范围后再判断是否需要故障转移。Internet Monitor 会将互联网的测量值发布到 CloudWatch Logs,因此可以在月度评审中分析各 ISP 的趋势,并将其用于改进多区域设计。

参考资料(AWS 官方)

本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。

如本页内容与官方文档不一致,请以官方文档为准。

分享