云舟观测:集成开源Grafana Faro构建前端页面性能监控平台

news2024/11/17 19:09:35

在当今互联网时代,面对纷乱繁杂的网上资源,用户的耐心和注意力是极为宝贵的资源,当用户访问一个网站或应用时,他们期望的是快速且无缝的体验,任何加载延迟或功能故障都可能导致用户流失,影响品牌体验。因此,前端页面性能监控成为了确保网页应用高效运行的重要手段。

01

前端页面性能监控

前端页面性能监控是指通过监测和分析前端网页或应用程序的加载速度、渲染效率以及用户交互响应时间等指标,以提供优化建议和改进前端体验的过程。一般会在前端页面嵌入JS,或者在前端项目中集成SDK来监测和收集数据,对收集上来的数据进行解析,分析和组织,最后进行可视化展示。这些数据主要有:

  • 用户的访问指标:包括PV、会话、IP、访问页面等;

  • 页面性能指标:包括LCP(Largest Contentful Paint, 最大内容绘制时间),FID(First Input Delay, 用户首次与网页互动时的延迟时间),CLS(Cumulative Layout Shift, 计算网页载入时的内容是否会因动态加载而页面移动,0表示没有变化)等。

  • 页面错误:包括页面错误率,错误类型,错误详细信息等;

02

监控平台

Grafana Faro  Web SDK 是一个高度可配置的开源 JavaScript代理,可以轻松嵌入到 Web 应用程序中来收集真实用户监控 (RUM) 数据:性能指标、日志、异常、事件和追踪。

3ff3f85c7143bc1d626c145e99b5ff22.png

如图所示,在前端项目中集成Grafana Faro提供的SDK,配置云舟观测的网关地址以及应用名称,就可以将前端的指标、日志、事件、异常数据上报,在云舟观测网关内部经过解析和组织后进行存储,同时提供可视化页面进行展示。

  • 收集到的事件(event)数据

http_client_ip - 发起HTTP请求的客户端IP地址,用于标识请求来源。

http_origin - HTTP请求的来源域名,有助于理解跨域请求的情况。

http_referer - HTTP请求头中的Referer字段,显示了请求是从哪个页面链接过来的。

sdk_version - 使用的软件开发工具包(SDK)版本号。

app_name - 应用程序的名称。

app_version - 应用程序的版本号。

view_name - 当前视图或页面的名称。

browser_name - 用户使用的浏览器名称。

browser_version - 浏览器的版本号。

browser_os - 运行浏览器的操作系统。

browser_useragent - 用户代理字符串,包含了浏览器、操作系统及其他设备信息。

browser_mobile - 标记该请求是否来自移动设备。

page_url - 请求页面的完整URL地址。

session_id - 用户会话的唯一标识符。

session_previous - 指上一次会话的信息或ID。

timestamp - 事件发生的时间戳。

event_name - 发生的事件名称。

event_domain - 事件所属的领域或范围。

event_data_name - 事件数据的名称或标识符。

event_data_duration - 事件的持续时间。

event_data_tcphandshaketime - TCP握手所花费的时间。

event_data_dnslookuptime - DNS查找所花费的时间。

event_data_tlsnegotiationtime - TLS/SSL协商所花费的时间。

event_data_responsestatus - HTTP响应的状态码。

event_data_redirecttime - 重定向过程所花费的时间。

event_data_requesttime - 发送请求所花费的时间。

event_data_responsetime - 接收到响应所花费的时间。

event_data_fetchtime - 完成整个获取操作所花费的时间。

event_data_serviceworkertime - Service Worker处理请求所花费的时间。

event_data_decodedbodysize - 解码后的body大小。

event_data_encodedbodysize - 编码后的body大小。

event_data_cachehitstatus - 缓存命中状态,指示是否从缓存中获取了资源。

event_data_renderblockingstatus - 渲染阻塞状态,描述了哪些资源可能阻止了页面渲染。

event_data_protocol - 使用的协议,如HTTP/1.1或HTTP/2。

event_data_initiatortype - 初始化请求的类型,如script、image等。

event_data_visibilitystate - 页面的可见性状态,如visible、hidden或prerender。

event_data_fromview - 事件发生的初始视图。

event_data_toview - 事件发生的最终视图。

event_data_type - 事件的类型,如navigation、reload等。

event_data_ttfb - 时间到第一个字节(Time To First Byte),即服务器开始响应的时间。

event_data_onloadtime - onload事件触发的时间。

event_data_pageloadtime - 页面加载完成的时间。

event_data_documentparsingtime - 解析文档所花费的时间。

event_data_domprocessingtime - DOM处理所花费的时间。

event_data_domcontentloadhandler - DOMContentLoaded事件处理所花费的时间。

  • 收集到的指标(measurement)数据:

timestamp - 发生的时间戳。

lcp - (Largest Contentful Paint) 最大内容绘制时间

fid - (First Input Delay) 首次输入延迟

ttfb - (Time To First Byte) 从浏览器发送请求到接收到第一个字节的响应之间的时间

fcp - (First Contentful Paint) 首次内容绘制时间

cls - (Cumulative Layout Shift) 累计布局偏移

  • 收集到的日志(log)数据:

timestamp - 发生的时间戳。

level - 日志级别

message - 具体日志

  • 收集到的异常(exception)数据:

timestamp - 发生的时间戳。

type - 异常类型

value - 具体异常信息

03

可视化分析

页面访问:展示当前应用在所选时间范围内的PV、会话数、IP数、浏览器分布、操作系统分布,以及访问量Top10的页面,帮助用户了解当前网站的流量及核心页面分布。

81af2dd4b8bf9f644b84b14f9ed59a48.png

页面性能:展示页面性能的5个核心指标平均值以及p75时间趋势值,帮助用户了解当前网站的整体性能。

ebde8c30f90bb754a0bf11251fe92ebc.png

页面错误:展示页面错误的统计数据,包括错误数量,Top10的错误信息,发生错误的页面分布以及浏览器分布,帮助用户快速定位页面资源错误。

bd36a223bb88db340d744da7ba04ac4c.png

04

展望

前端页面性能监控作为RUM(真实用户体验)的一部分,是云舟观测产品全景拼图的一部分,后续将在页面加载、资源加载、用户行为、Ajax请求、链路监控方面持续进行迭代优化,并且和链路追踪(服务端性能监控)打通,提供端到端的性能监控和诊断服务。

关于云舟观测

云舟观测是由360智汇云推出的一款一站式数据采集与监控观测产品,可以对基础设施、应用性能,以及云原生下业务指标和日志进行全面的监控和观测,构建全链路的可观测性服务,帮助用户及时发现和解决系统及应用性能问题,提高系统的稳定性和可靠性。

更多技术和产品文章,请关注👆


360智汇云是以"汇聚数据价值,助力智能未来"为目标的企业应用开放服务平台,融合360丰富的产品、技术力量,为客户提供平台服务。
目前,智汇云提供数据库、中间件、存储、大数据、人工智能、计算、网络、视联物联与通信等多种产品服务以及一站式解决方案,助力客户降本增效,累计服务业务1000+。
智汇云致力于为各行各业的业务及应用提供强有力的产品、技术服务,帮助企业和业务实现更大的商业价值。
官网:https://zyun.360.cn
客服电话:4000052360

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2175023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 中的 FOREIGN KEY 约束:确保数据完整性的关键

在 MySQL 数据库中,FOREIGN KEY(外键)约束是一种非常重要的机制,它可以帮助我们确保数据的完整性和一致性。那么,FOREIGN KEY 约束究竟是什么呢?让我们一起来深入了解一下。 一、什么是 FOREIGN KEY 约束&…

计算机毕业设计 招生宣传管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

支付宝远程收款api之小荷包跳转码

想要生成小荷包跳转码的二维码,需要进行以下步骤: 1、开通支付宝小荷包的收款功能权限 2、获取支付宝的小荷包收款码和支付宝账户的UID已经手机号等相应信息(可能会有变动) 3、可能需要一定的代码基础,讲所需信息填…

基于python+控制台+txt文档实现学生成绩管理系统(含课程实训报告)

目录 第一章 需求分析 第二章 系统设计 2.1 系统功能结构 2.1.1 学生信息管理系统的七大模块 2.1.2 系统业务流程 2.2 系统开发必备环境 第三章 主函数设计 3.1 主函数界面运行效果图 3.2 主函数的业务流程 3.3 函数设计 第四章 详细设计及实现 4.1 学生信息录入模块的设计与实…

2024.9.28 作业+思维导图

widget.cpp #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {this->setFixedSize(320,448);this->setWindowFlag(Qt::FramelessWindowHint);//QPushButtonQPushButton *PushButton1 new QPushButton("登录",this);PushButto…

先进封装技术 Part02---TSV科普

一、引言 随着电子设备向更小型化、更高性能的方向发展,传统的芯片互连技术已经无法满足日益增长的需求。在这样的背景下,TSV(Through-Silicon Via,硅通孔)技术应运而生,成为先进封装技术中的核心之一。 如果我们看大多数主板,可以看到两件事:第一,芯片之间的大多数连…

《深度学习》自然语言处理 统计、神经语言模型 结构、推导解析

目录 一、语言转换方法 1、如何将语言转换为模型可以直接识别的内容 1)数据预处理 2)特征提取 3)模型输入 4)模型推理 二、语言模型 1、统计语言模型 1) 案例: • 运行结果: • 稀疏…

AI Agent如何落地?来看看在教育行业大厂的落地实践

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 以正教育AI Agent 以正教育大模型AI Agen…

【4.7】图搜索算法-DFS和BFS解根到叶子节点数字之和

一、题目 给定一个二叉树,它的每个结点都存放一个 0-9 的数字, 每条从根到叶子节点的路径都代表一个数字 。 例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。 说明 : 叶子节点是指没有子节点…

CF补题第二天

题1 先来一道最短路热身 题目描述: 思路:第一眼SPFA,结果直接超时,正解思路:每一条边只走一次,那么我们找出不同的连通块,然后拓扑排序求最短路(因为无环),…

有问题未解决(9.28)

#include <stdio.h> int main() {int a 1;int b 2;int c 3;int arr[] { a,b,c };arr[0] 10;printf("%d\n", a);//打印结果为1&#xff1b;return 0; } 颠覆认知了&#xff0c;或许也没有颠覆 arr是一个int类型的数组&#xff0c;他存的就是一个数&…

Android——ContentObserver监听短信

概述 内容观察器ContentObserver给目标内容注册一个观察器&#xff0c;目标内容的数据一旦发生变化&#xff0c;观察器规定好的动作马上触发&#xff0c;从而执行开发者预先定义的代码。 思路 注册一个监听 getContentResolver().registerContentObserver(uri, true, mObser…

QT+ESP8266+STM32项目构建三部曲三--QT从环境配置到源程序的解析

一、阿里云环境配置 大家在编写QT连接阿里云的程序之前&#xff0c;先按照下面这篇文章让消息可以在阿里云上顺利流转 QTESP8266STM32项目构建三部曲二--阿里云云端处理之云产品流转-CSDN博客文章浏览阅读485次&#xff0c;点赞7次&#xff0c;收藏4次。创建两个设备&#xff…

找不到msvcp110.dll怎么办,总结6种解决msvcp110.dll的方法

在电脑使用过程中&#xff0c;我们可能会遇到各种各样的问题&#xff0c;其中之一就是系统提示某个文件丢失。msvcp110.dll丢失是一个比较常见的问题&#xff0c;它可能导致某些程序无法正常运行。那么&#xff0c;如何解决这个问题呢&#xff1f;本文将详细介绍6种修复msvcp11…

手把手教你用PyTorch从零训练自己的大模型(非常详细)零基础入门到精通,收藏这一篇就够了

长按关注《AI科技论谈》 LLM是如今大多数AI聊天机器人的核心基础&#xff0c;例如ChatGPT、Gemini、MetaAI、Mistral AI等。这些LLM背后的核心是Transformer架构。 本文介绍如何一步步使用PyTorch从零开始构建和训练一个大型语言模型&#xff08;LLM&#xff09;。该模型以Tra…

OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用)

在上篇文章中&#xff0c;我们学习了移植rk的npu驱动到OpenHarmony提供的内核。本文我们来学习如何在OpenHarmony标准系统rk系列芯片如何使用npu OpenHarmony RK系列芯片运行npu测试用例 在移植npu驱动到OpenHarmony之后&#xff0c;来运行npu样例进行简单测试 1.O 测试准备…

【球形空间产生器】

题目 代码 #pragma GCC optimize(3) #include <bits/stdc.h> using namespace std; const double eps 1e-6; const int N 12; double g[N][N]; double ss[N]; int n; void gauss() {int c, r, t;for(c 1, r 1; c < n; c){int t r;for(int i r1; i < n; i)i…

Wayfair封号的常见原因及解决方案解析

近期关于Wayfair账号封禁的问题引发了广泛讨论。许多用户报告称&#xff0c;他们的Wayfair账户被突然封禁&#xff0c;这一现象不仅影响了用户的购物体验&#xff0c;也对Wayfair的品牌形象造成了一定的冲击。本文将深入探讨Wayfair封号的原因&#xff0c;并提出相应的解决方案…

【SpringCloud】服务注册/服务发现-Eureka

服务注册/服务发现-Eureka 1. 背景1.1 问题描述1.2 解决思路1.3 什么是注册中⼼1.4 CAP理论1.5 常⻅的注册中⼼ 2. Eureka 介绍3. 搭建Eureka Server 1. 背景 1.1 问题描述 上个章节的例⼦中可以看到, 远程调⽤时, 我们的URL是写死的 String url "http://127.0.0.1:90…

Flink CDC实时同步MySQL到Doris

文章目录 1.开启Flink集群2.MySQL准备数据并开启Binlog3.FlinkCDC 提交任务到集群任务提交同步变更库表迁移 问题总结 Apache Flink CDC&#xff08;Change Data Capture&#xff09;是一个用于捕获和跟踪数据库更改的技术&#xff0c;它能够实时地从数据库中获取数据变更&…