当前位置:首页 » 网页前端 » 前端监控异常解决方案
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端监控异常解决方案

发布时间: 2022-09-20 10:44:34

⑴ 如何做前端异常监控

如果想要自己实现,一个简单的版本就是重写'window.onerror'监听事件,将监听的数据发送到自己服务器处理。

你也可以选择一些前端BUG监控服务,比如国外的sentry, 国内的fundebug来做24小时实时监控。Fundebug的监控插件可以支持所有主流浏览器的错误监控,并且记录用户出错前的行为,方便错误重现。而且大量的bug数据会通过机器学习智能聚合,整合分析。

⑵ 监控显示屏闪烁怎么解决 监控显示屏闪烁解决方法

1、首先检查各处视频头是否有异常。监控显示屏上闪动,首先应该考虑视频头是否有异常,检查视频头是否有松动、虚接,或者视频头损坏现象。视频头的检查应该采用逐步排查的方法,可以从摄像机端的视频头开始排查也可以从监视器端往前排查。或者采用从中间路经的设备向其中一端排查的方法来找到故障视频头。排除故障时将视频信号输出端的视频头接在手持小型彩色监视器上,逐一排查,找到故障点。视频头松动需要重新紧固,视频头损坏需要重新焊接更换新视频头。

2、检查视频线是否异常。监控显示屏上闪动,排除视频头的因素,还要考虑是否是视频传输线路上存在异常。用万用表测量视频线,可以将摄像机端视频头的芯和视频头的外皮混接,再在监视器端视频头处,用万用表带蜂鸣器档测量,看是否能发出“滴”声,发出“滴”声证明该段视频线是通的。如果线路不通,可以再依据此方法分段排查。

3、检查摄像机。监控显示屏上闪动可以检查摄像机是否存在异常。首先判断监控显示屏上闪动是全屏闪动还是单一画面闪动,比如监视器是四个画面的,只有其中一个画面闪动,排除与摄像机相关联的其他设备故障,判断为摄像机故障后,更换新摄像机。

4、检查摄像机镜头是否异常。还是以监控显示屏为四画面为例,如果只是其中的一个画面闪动,排除摄像机、视频头、视频线、以及相应端子故障外,就要检查是否是相应闪动画面的摄像机镜头出现了故障,导致画面闪动现象的发生。判断为摄像机镜头故障后,可以紧固摄像机镜头,或者更换新的摄像机镜头加以解决。

5、检查监视器或者监视器通道是否异常。监控显示屏上闪动可以检查监视器或者监视器通道是否存在异常。如果监视器有两个视频输入通道,首先将视频输入线更换到监视器的另一个备用通道上,检查更换通道后的监视器是否还存在闪动现象,如果故障现象依旧存在,尝试更换监视器解决。

6、检查视频隔离地变压器,视频分配器,矩阵处的端子是否有异常。监控显示屏上闪动,可以检查中间途经的各个设备的端子是否存在异常。比如,视频隔离地变压器,视频分配器以及矩阵,可以采用手持小型彩色监视器,采取逐断排查的方法,找到相应的故障点。并且采用更换端子的方式,看看是否能将故障排除。

⑶ 网络监控故障常见问题

网络监控故障常见的问题。
1、机器无法启动
首先看看接摄像机的电源网线灯是否亮,不亮就是电源故障。换电源。其次看供电电压或者功率是不是不够。
2
/10
2、没有监视画面
看指示灯,检查电源和网线是否连上;拔掉电源等待一分钟左右,再插上,或者重启网络摄像机 。
3
/10
3、通过浏览器无法访问
检查电源和网络是否连接正常;检查本机,集线器,交换机和网卡的电源及网络指示灯实现工作状态;查看IP地址、端口是否被占用。
4
/10
4、录像回放时,出现系统假死现像
可能是在搜索的内容过多,系统反应迟钝,请勿此时乱按其他键静静等待两至三分钟就可以。
5
/10
5、显示器上出现色差太大,画面不清晰。
这种情况是显示器长时间开启,磁场干扰造成的, 这种情况只需要消磁就可以了。
6
/10
6、画面越来越模糊
这可能跟监控头所在的位置有关系,灰尘比较大或是室内较潮湿造成的,所以监控灰尘厚的时候要擦拭,日常维护工作要做好。
7
/10
7、画面突然间没了
这种可能是录像机后面扣接头松动了,或是老化了。如果松动可以按照通道找到此接头处,轻轻旋转扣接头,就可以拔掉,然后重新插上。如果是老化了,那就找维修人员来处理了;U盘或是移动硬盘拷贝不出需要的资料,这是文件资料不对,这时候要把U盘或是移动硬盘的格式化成FAT32类型。
8
/10
8、画面不连贯
网络宽带被占用,如下载大文件。可以暂停试试;同时观看几路视频,如果您的宽带是1M,观看3路以上视频话出现画面卡的情况;同时3个人以上连接网络摄像机。查明是否账号泄露,及时修改您的密码;码流设置较大,把码流设置小一点看看;网络环境较差,出现包跳帧的现象,画面不流畅。
9
/10
9、时间显示不对
时间显示相差太大或出现乱码,一般是电池座接触不良或者使用电压偏低。检查电池松紧和电压高低。
10
/10
10、硬盘录像机上面录像指示灯不亮了
这种情况可能悬硬盘坏了,或是未设置录像,当发生这种情况的时候第一时间查看硬盘是否出现错误,查看方法是登录网盘录像机主页面,找到硬盘管理然后用下面键盘查看是否正常。如果出现错误要及时联系维修人员上门维修。

⑷ 监控录像显示不在线是怎么回事。有两个头正常运行,一个头不在线怎么办

有一个摄像头不在线可能的原因是:一是没有电或者电源有问题;二是网线链接存在题,可以使用对线器测试一下;三是检查硬盘录像机是否对该摄像机进行添加录像。也可以使用摄像机厂家的搜索软件进行搜索,看看是否在线,如果能搜索到,添加录像就好。

⑸ Web前端工程师如何处理Web前端的异常_

今天小编要跟大家分享的文章是关于Web前端工程师如何处理前端的异常。前端一直是距离用户最近的一层,随着产品的日益完善,我们会更加注重用户体验,而前端异常却如鲠在喉,甚是烦人。下面我们就来看一看前端工程师该如何处理前端异常。一、为什么要处理异常异常是不可控的,会影响最终的呈现结果,但是我们有充分的理由去做这样的事情。


1.增强用户体验;
2.远程定位问题;
3.未雨绸缪,及早发现问题;
4.无法复线问题,尤其是移动端,机型,系统都是问题;
5.完善的前端方案,前端监控系统;


对于JS而言,我们面对的仅仅只是异常,异常的出现不会直接导致JS引擎崩溃,最多只会使当前执行的任务终止。二、需要处理哪些异常?对于前端来说,我们可做的异常捕获还真不少。总结一下,大概如下:


·___S语法错误、代码异常


·___JAX请求异常


·___蔡试醇釉匾斐


·___romise异常


·___frame异常


·___缬_cripterror


·___览:涂ǘ


下面我会针对每种具体情况来说明如何处理这些异常。三、Try-Catch的误区try-catch只能捕获到同步的运行时错误,对语法和异步错误却无能为力,捕获不到。
1.同步运行时错误:


try{
letname='jartto'
console.log(nam);
}catch(e){
console.log('捕获到异常:',e);
}


输出:


捕获到异常:ReferenceError:namisnotdefined
at:3:15


2.不能捕获到语法错误,我们修改一下代码,删掉一个单引号:


try{
letname='jartto;
console.log(nam);
}catch(e){

console.log('捕获到异常:',e);
}


输出:


UncaughtSyntaxError:Invalidorunexpectedtoken


不过语法错误在我们开发阶段就可以看到,应该不会顺利上到线上环境。


3.异步错误


try{
setTimeout(()=>{
undefined.map(v=>v);
},1000)
}catch(e){
console.log('捕获到异常:',e);
}


我们看看日志:


UncaughtTypeError:Cannotreadproperty'map'of
undefined
atsetTimeout(:3:11)


并没有捕获到异常,这是需要我们特别注意的地方。四、window.onerror不是万能的当JS运行时错误发生时,window会触发一个ErrorEvent接口的error事件,并执行window.onerror()。/**
*@param{String}message错误信息
*@param{String}source出错文件
*@param{Number}lineno行号
*@param{Number}colno列号
*@param{Object}errorError对象(对象)
*/

window.onerror=function(message,source,lineno,colno,error){
console.log('捕获到异常:',{message,source,lineno,colno,error});
}

1.首先试试同步运行时错误


window.onerror=function(message,source,lineno,colno,
error){
//message:错误信息(字符串)。
//source:发生错误的脚本URL(字符串)
//lineno:发生错误的行号(数字)
//colno:发生错误的列号(数字)
//error:Error对象(对象)
console.log('捕获到异常:',{message,source,lineno,colno,
error});
}
Jartto;


可以看到,我们捕获到了异常:

2.再试试语法错误呢?


window.onerror=function(message,source,lineno,colno,
error){
console.log('捕获到异常:',{message,source,lineno,colno,error});
}
letname='Jartto


控制台打印出了这样的异常:


UncaughtSyntaxError:Invalidorunexpectedtoken


什么,竟然没有捕获到语法错误?


3.怀着忐忑的心,我们最后来试试异步运行时错误:


window.onerror=function(message,source,lineno,colno,
error){
console.log('捕获到异常:',{message,source,lineno,colno,error});
}
setTimeout(()=>{
Jartto;
});


控制台输出了:


捕获到异常:{message:"Uncaught
ReferenceError:Jarttoisnotdefined",source:
"http://127.0.0.1:8001/",lineno:36,colno:5,error:
ReferenceError:Jarttoisnotdefined
atsetTimeout(http://127.0.0.1:8001/:36:5)}


4.接着,我们试试网络请求异常的情况:






我们发现,不论是静态资源异常,或者接口异常,错误都无法捕获到。


补充一点:window.onerror函数只有在返回true的时候,异常才不会向上抛出,否则即使是知道异常的发生控制台还是会显示UncaughtError:xxxxx


window.onerror=function(message,source,lineno,colno,
error){
console.log('捕获到异常:',{message,source,lineno,colno,error});
returntrue;
}
setTimeout(()=>{
Jartto;
});


控制台就不会再有这样的错误了:


UncaughtReferenceError:Jarttoisnotdefined
atsetTimeout((index):36)


需要注意:onerror最好写在所有JS脚本的前面,否则有可能捕获不到错误;onerror无法捕获语法错误;


到这里基本就清晰了:在实际的使用过程中,onerror主要是来捕获预料之外的错误,而try-catch则是用来在可预见情况下监控特定的错误,两者结合使用更加高效。


问题又来了,捕获不到静态资源加载异常怎么办?五、window.addEventListener当一项资源(如图片或脚本)加载失败,加载资源的元素会触发一个Event接口的error事件,并执行该元素上的onerror()处理函数。这些error事件不会向上冒泡到window,不过(至少在Firefox中)能被单一的window.addEventListener捕获。



window.addEventListener('error',(error)=>{
console.log('捕获到异常:',error);
},true)




控制台输出:


SHAPE*MERGEFORMAT


由于网络请求异常不会事件冒泡,因此必须在捕获阶段将其捕捉到才行,但是这种方式虽然可以捕捉到网络请求的异常,但是无法判断HTTP的状态是404还是其他比如500等等,所以还需要配合服务端日志才进行排查分析才可以。


需要注意:


·___煌榔飨路祷氐_rror对象可能不同,需要注意兼容处理。


·___枰⒁獗苊_ddEventListener重复监听。六、PromiseCatch在promise中使用catch可以非常方便的捕获到异步error,这个很简单。


没有写catch的Promise中抛出的错误无法被onerror或try-catch捕获到,所以我们务必要在Promise中不要忘记写catch处理抛出的异常。


解决方案:为了防止有漏掉的Promise异常,建议在全局增加一个对unhandledrejection的监听,用来全局监听UncaughtPromiseError。使用方式:


window.addEventListener("unhandledrejection",
function(e){
console.log(e);
});


我们继续来尝试一下:


window.addEventListener("unhandledrejection",
function(e){
e.preventDefault()
console.log('捕获到异常:',e);
returntrue;
});
Promise.reject('promiseerror');


可以看到如下输出:

那如果对Promise不进行catch呢?


window.addEventListener("unhandledrejection",
function(e){
e.preventDefault()
console.log('捕获到异常:',e);
returntrue;
});
ewPromise((resolve,reject)=>{
reject('jartto:promiseerror');
});


嗯,事实证明,也是会被正常捕获到的。


所以,正如我们上面所说,为了防止有漏掉的Promise异常,建议在全局增加一个对unhandledrejection的监听,用来全局监听UncaughtPromiseError。


补充一点:如果去掉控制台的异常显示,需要加上:


event.preventDefault();七、VUEerrorHandlerVue.config.errorHandler=(err,vm,info)=>{
console.error('通过vue
errorHandler捕获的错误');
console.error(err);
console.error(vm);
console.error(info);
}八、React异常捕获React16提供了一个内置函数componentDidCatch,使用它可以非常简单的获取到react下的错误信息


componentDidCatch(error,info){
console.log(error,info);
}


除此之外,我们可以了解一下:errorboundaryUI的某部分引起的JS错误不应该破坏整个程序,为了帮React的使用者解决这个问题,React16介绍了一种关于错误边界(errorboundary)的新观念。


需要注意的是:errorboundaries并不会捕捉下面这些错误。


1.事件处理器2.异步代码3.服务端的渲染代码4.在errorboundaries区域内的错误


我们来举一个小例子,在下面这个componentDIdCatch(error,info)里的类会变成一个errorboundary:


.Component{
constructor(props){
super(props);
this.state={hasError:false};
}
componentDidCatch(error,info){
//DisplayfallbackUI
this.setState({hasError:true});
//
logErrorToMyService(error,info);
}
render(){
if(this.state.hasError){
//
return

Somethingwentwrong.

;
}
returnthis.props.children;
}
}


然后我们像使用普通组件那样使用它:







componentDidCatch()方法像JS的catch{}模块一样工作,但是对于组件,只有class类型的组件(classcomponent)可以成为一个errorboundaries。


实际上,大多数情况下我们可以在整个程序中定义一个errorboundary组件,之后就可以一直使用它了!九、iframe异常对于iframe的异常捕获,我们还得借力window.onerror:


window.onerror=function(message,source,lineno,colno,
error){
console.log('捕获到异常:',{message,source,lineno,colno,error});
}


一个简单的例子可能如下:


frameborder="0">
十、Scripterror一般情况,如果出现Scripterror这样的错误,基本上可以确定是出现了跨域问题。这时候,是不会有其他太多辅助信息的,但是解决思路无非如下:


跨源资源共享机制(CORS):我们为script标签添加crossOrigin属性。


crossorigin>


或者动态去添加js脚本:


constscript=document.createElement('script');
script.crossOrigin='anonymous'
script.src=url;
document.body.appendChild(script);


特别注意,服务器端需要设置:Access-Control-Allow-Origin


此外,我们也可以试试这个-解决ScriptError的另类思路:


constoriginAddEventListener=EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener=function(type,listener,options){
constwrappedListener=function(...args){
try{
returnlistener.apply(this,args);
}
catch(err){
throwerr;
}
}
returnoriginAddEventListener.call(this,type,wrappedListener,options);
}


简单解释一下:


·___男戳_ventTarget的addEventListener方法;


·___源氲_istener进行包装,返回包装过的listener,对其执行进行try-catch;


·___榔鞑换岫_ry-catch起来的异常进行跨域拦截,所以catch到的时候,是有堆栈信息的;


·___匦_hrow出来异常的时候,执行的是同域代码,所以window.onerror捕获的时候不会丢失堆栈信息;


利用包装addEventListener,我们还可以达到“扩展堆栈”的效果:


(()=>{
constoriginAddEventListener=EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener=function(type,listener,options){
+//捕获添加事件时的堆栈
+constaddStack=newError(`Event(${type})`).stack;
constwrappedListener=function(...args){
try{
returnlistener.apply(this,args);
}
catch(err){
+//异常发生时,扩展堆栈
+err.stack+=' '+addStack;
throwerr;
}
}
returnoriginAddEventListener.call(this,type,wrappedListener,options);
}
})();十一、崩溃和卡顿卡顿也就是网页暂时响应比较慢,JS可能无法及时执行。但崩溃就不一样了,网页都崩溃了,JS都不运行了,还有什么办法可以监控网页的崩溃,并将网页崩溃上报呢?


崩溃和卡顿也是不可忽视的,也许会导致你的用户流失。


1.利用window对象的load和beforeunload事件实现了网页崩溃的监控。不错的文章,推荐阅读:Logging
InformationonBrowserCrashes。window.addEventListener('load',function(){
sessionSt

⑹ 如何做前端异常监控

1、监控系统分前端和后端。 2、顾名思义,前端是指监控摄像头;后端是指机房端(有硬盘录像机、解码器、矩阵等)。

⑺ 监控连不上网,怎么设置

因为主机没有与路由器同一网段,通过更正IPv4参数以后才能处理。以海康威视监控为例,设置的办法如下:

1、直接打开电脑浏览器,输入IP地址进行跳转。