php sentry,sentry使用
概念
js错误日志统计工具,官网文档
以下说明前提条件都是raven-js
日志收集必要条件
sentry平台帐号注册
raven客户端安装
sentry服务平台
进行首页->新建项目之后,点击settings,可以设置错误日志收集条件,其中客户
端dsn(结构:协议://公钥:私钥@sentry平台地址/sentryId), 在sentry
客户端raven安装配置中会用到。
sentry客户端raven
安装步骤
根据使用平台选择raven(sdk选择官网有说明)。
配置方法如下(我用的是react,使用的是import方式,其中url就是sentry服务端获取的dsn,省略号是配置options):
import Raven from 'raven-js';
Raven.config(url, {
release: '1.0.0',
whitelistUrls: [
...
],
...
}).install();
主要参数说明(所有上报都会携带的参数,公用)
tags(对应sentry服务平台错误详情中的tags,便于分析错误发生的情景):
user(对应sentry服务平台错误详情中的user,便于记录触发错误的具体用户):
extra(对映sentry服务平台错误详情中的Additional Data,便于各别信息的统计):
whitelistUrls: 上报到sentry服务平台的白名单,假如触发错误的js链接脚本host不在其值里,就无法上报错误。
错误日志上报(以我用的raven-js作为说明,其他可查看源代码)
被动上报
js运行期间,如果发生错误时,错误(比如点击回调函数执行报错,ajax同源请求
报错等)没有被try catch或者以其他方式捕捉,就会冒泡到window,触发
[onerror][2]事件。当然资源加载失
败,比如img, script,会执行该元素onerror不会冒泡window.onerror,
onerror具体声明如下:
window.onerror = function(messageOrEvent, source, lineno, colno, error) { ... }
因为window.onerror是ECMAScript不标准的属性,不同浏览器实现可能会略有
不同,error参数是raven上报日志的关键(ps: 没有error,就找不到错误栈
stack,自然就追踪不到问题),所以raven客户端巧用try, catch对错误进行捕
捉(ps:catch获取到的error对象有raven需要的东西,比如错误栈),然后采用
captureException进行错误上报,核心源代码如下:
对addEventListener、setTimeout、setInterval、
requestAnimationFrame等回调函数进行了如上包装,这样就可以保证这些函数
的回调报错时候可以有错误栈,同理,可以根据项目架构对可能出现问题进行
try..catch包装,采用手动上报,做到最大限度错误日志上报。
主动上报
采用raven.captureException(msg/e, options),第一参数可以是字符串,
也可以是Error对象(ps: raven内部会对所传参数进行判断,如果是msg,会转换
成Error对象),第二个参数options可设置参数同raven配置安装时可以用的参数
同,只不过这里用到的参数作用域只限于此条错误日志,raven.config中用的
options对所有错误日志都生效。
应用可使用的监听钩子(*.adEventListener(如下事件,callback)
ravenSuccess | onRavenSuccess: raven上报成功之后会dispatch此事
件,可以监听此事件做一些其他的事情,比如上报到其他的平台等等。
ravenFailure | onRavenFailure:raven上报失败之后会dispatch此事
件,可以监听此事件做一些其他的事情,比如上报到其他的平台等等。
ravenHandle | onRavenHandle:手动调用Raven.captureException之
后会dispatch此事件,可以监听此事件做一些其他的事情,比如上报到其他的平台
等等。
总结一下就是根据自己的情况,可以设置一下whitelistUrls, ignoreErrors,
ignoreUrls,上报比例以及javascript跨域资源错误统计处理(crossorigin),如果你使用webpack,可以在output中添加一个参数crossOriginLoading,webpack编译时会自动给按需加载的js获取加上crossorigin,说明如下:
服务端response头部添加Access-Control-Allow-Origin: *。
建议
公钥,私钥信息不要存放于前端页面,可以放在中间服务器,走客户端-》中间服务-》sentry服务。
php sentry,sentry使用相关推荐
- Hue、Hive、Sentry、Airflow、Oozie
本篇博文主要讲解的是Hue这个开源软件.通过阅读本博客,可以从宏观的角度了解Hue这个应用. 本文介绍了什么是Hue,Hue的架构,Hue的特点,在Hue上面使用Hive的优点,在Hue上浏览文件和数 ...
- sentry日志管理系统安装以及使用教程
Sentry 是一个开源的实时错误报告工具,支持 web 前后端.移动应用以及游戏,支持 Python.OC.Java.Go.Node.Django.RoR 等主流编程语言和框架 ,还提供了 GitH ...
- Apache Sentry架构介绍
2019独角兽企业重金招聘Python工程师标准>>> cdh版本的hadoop在对数据安全上的处理通常采用Kerberos+Sentry的结构. kerberos主要负责平台用户的 ...
- 什么是 Apache Sentry , Apache Sentry 介绍
Apache Sentry是Hadoop中的一个基于角色的细粒度授权组件.Sentry可以在Hadoop集群上对通过身份认证的用户和应用程序控制数据访问权限.Sentry开箱即用的支持Hive,Hiv ...
- Apache Sentry 第一弹:Server启动、连接Hue、分组详解
2019独角兽企业重金招聘Python工程师标准>>> 前言: Sentry是Hadoop安全方面的一个开源组件,目前还在孵化中,地址:https://sentry.incubato ...
- Sentry For Vue 完整接入详解(2021 Sentry v21.8.x)前方高能预警!三万字,慎入!
内容源于:https://docs.sentry.io/platforms/javascript/guides/vue/ 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创 ...
- sentry mysql_Apache Sentry安装及简单使用
1 环境描述 三台hadoop集群,分别是master.slave1和slave2.下面是这三台机器的软件分布: master:NameNode.ZK.HiveMetaSotre.HiveServer ...
- vue + sentry监控平台
vue + sentry监控平台 1. 在sentry平台创建账户 平台地址: sentry. 2. 创建组织,创建项目 需要记住team名字,和项目名字,后续关联需要用到 3. 在项目中引入sent ...
- CentOS6.8搭建Sentry环境
2019独角兽企业重金招聘Python工程师标准>>> 安装第三方依赖包(redis依赖包,python依赖包,pip依赖包等必须提前安装): yum install -y zlib ...
最新文章
- was、ihs、 mq、 db2的版本查询
- 将Jersey与Spring整合
- nacos配置刷新失败导致的cpu上升和频繁重启,nacos配置中心源码解析
- 快速入门Matplotlib
- 5分钟 学会 webpack4.0之 加薪必备
- SQL 一次插入多条记录
- 修改 oracle 数据库 TNSLSNR.exe 占用 8080 端口
- github入门教程最全中文版(官方)
- 服务器显示未识别网络怎么办,未识别网络怎么解决
- Java设计模式实战 ~ 观察者模式分析与实战
- php控制舵机,分享一个关于SG90舵机的实验(+串口控制)
- 那些吸引眼球的微信标题你会么?
- Corsiniの时光漏
- springboot集成邮箱配置ssl或tls协议
- 【朝花夕拾】Android编码风格篇
- 堡垒主机是堡垒机吗?两者有什么关系?
- 免费QQ群管助手-帮你管理QQ群
- 使用Office UI fabric react icons显示图标
- java小游戏之飞机大战
- MATLAB 函数求极限,定积分,一阶导,二阶导(经典例题)
热门文章
- 三国志战略版:国庆英雄集结解说_三
- 多元正态分布的条件分布
- 【Revit二次开发】事务和事务处理(Transaction and FailureHandlingOptions)
- 过敏性鼻炎如何预防才好?
- opencv入门书籍推荐 opencv-Python书籍推荐
- 初二英语上册50页2d翻译,初一英语上册41页2d翻译
- 电信泄露客户信息,导致客户被骗损失钱财
- 前端单页面富应用(SPA)的实现
- AndroidStudio问题: Missing essential plugin
- bullet constraints bullet 约束