【问题标题】:RUM (Real User Monitoring) User-perceived load times and locationRUM(真实用户监控)用户感知的加载时间和位置
【发布时间】:2024-06-05 03:50:02
【问题描述】:

我希望根据用户的大致地理位置以及浏览器版本等其他信息来监控用户在我的网站上感知的页面加载时间。这些都可以通过页面上的 JavaScript 收集。然而,我的问题是发送、存储和呈现我正在监控的数据的最佳选择是什么?我已经查看了石墨和 statsd,但我不确定这些是否会起作用,因为我需要显示用户位置和各种页面的加载时间之间的相关性,例如登录、创建新订单等

【问题讨论】:

    标签: javascript performance graphite page-load-time statsd


    【解决方案1】:

    如果您想自己使用boomerang.js 来收集数据并将其记录到网络服务器。

    在最简单的情况下,您可以只解析 HTTP 日志中的数据,如果您想获得更复杂的信息,请查看 https://github.com/nature/boomcatch

    【讨论】:

      【解决方案2】:

      Graphite 和 statsd 是您所需要的。您只需要考虑如何从日志中解析这些信息并将其发送到 statsd。您向 statsd 发送 stat_name 和 stat_value。 stat_name 将是按用户位置、浏览器类型等组织数据的关键。它是一个由“.”分隔的命名空间。人物。因此,如果您正确解析日志,您可以调用 stat :

      stat.server1.client_location.browser_type.load_time

      然后它将出现在与命名空间对应的目录结构下的石墨 UI 中,因此您可以根据需要按服务器、位置或浏览器类型汇总数据。

      编辑:重新阅读您的问题后,在 Graphite 中根据加载时间绘制位置有点困难。它更侧重于在 x 轴上留出时间。但是,它可以通过 R 中的一些工作来完成:https://danslimmon.wordpress.com/2013/04/05/parameterizing-metrics-by-time-through-graphite-abuse/

      【讨论】:

      • 鉴于 statsd 可以处理我想要的参数(stat.server1.client_location.browser_type.load_time),并且从你给 Graphite 的链接来看,它看起来确实可以配置来呈现我想要的。 statsd 能否处理每次发送的不同值,即 stat.value1.value2 和 stat.value1.value2,value3?至于理论上将数据获取到 Statsd,我考虑的是使用 javascript 使用 navigation.timing api 获取感知的加载时间,然后也获取其他信息。然后,这将通过 UDP 发送到 node.js 服务器,该服务器会将其发送到 statsd。
      • 是的,您可以使用javascript和Navigation Timing,或者您可以使用boomerang.js,这是一个javascript库,如果在客户端浏览器上启用了Navigation Timing API,它会使用它。如果您希望用户 (RUM) 提供其他信息,它会获得感知的加载时间。还有一些说明可以在您的网页上运行异步非阻塞版本。 github.com/lognormal/boomerang我不确定我是否理解这个关于“发送不同值”的问题。目前我有 statsd 处理超过 100 个独特的指标。
      【解决方案3】:

      您可以试用https://www.atatus.com/ 服务,它为 Web 应用和混合应用提供真实用户监控、Ajax 监控、事务监控和 JavaScript 错误跟踪。

      PS:Atatus 的 Web 开发人员

      【讨论】:

        最近更新 更多