webfunny前端监控接入

1,237 阅读3分钟

Webfunny介绍

Webfunny是一款轻量级前端异常监控和前端性能监控系统,帮助前端工程师定位并解决各种线上问题,确保项目健康良好的运行

官网: www.webfunny.cn/home.html

可收集的错误(文件位置:/interceptor)

  1. jserror错误(infoType: 错误类型,on_error、console_error)

    on_error错误:TypeError、ReferenceError、UncaughtInPromiseError类型可以进行机器人通知

    console_error错误:console.error 打印的错误都可以警告进行机器人通知

  2. httpRequest错误

    对响应的结果根据不同状态进行机器人通知,也可以对接口请求的超时时间进行预警设置。

    响应状态码(status):404、500、502 超时时间:10s

  3. resourceError静态资源错误

    每次发生静态资源报错,会预警通知

  4. customerWarning自定义错误

    1)自定义错误接口每隔10分钟会调用一次

    2)内置的报错逻辑:当jsError/consoleError/httpError/resourceError报错达到100次或报错占比达到10%,就会触发预警

    3)其他自定义报警逻辑

发件邮箱配置

  1. 修改/bin/useCusEmailSys.js配置,邮箱服务器需要开启IMAP功能
module.exports = {
      useCusEmailSys: true,  // 是否使用自己的邮件系统, true: 使用配置的邮箱密码;false: 由webfunny系统发送邮件
      emailUser: "",         // 163邮箱用户名
      emailPassword: ""      // 163邮箱,网易老账号用密码, 新账号用安全码
    }
  1. 修改/util/utils.js下sendEmail方法

sendEmail: (email, subject, html, user, pass) => {
    const company = "baidu.com"
    let transporter = nodemailer.createTransport({
      host: "smtp.163.com",
      port: 465,
      secure: true, // true for 465, false for other ports
      auth: { user,pass },
    });
    // send mail with defined transport object  
    // subject包含邮箱验证码
    transporter.sendMail({
      from: "'" + company + "' <" + user + ">", // sender address
      to: email, // list of receivers
      subject: subject, // Subject line
      text: `<p>用户你好!</p><p>项目名${subject}</p><p>如有疑问,请联系:张三</p>`, // plain text body
      html: `<p>用户你好!</p><p>项目名${subject}</p><p>如有疑问,请联系:张三</p>` // html body
    });
  }

接入配置

  1. 注册webfunny账号,地址示例:http://localhost:8010/webfunny/register.html

  2. 管理员在【注册管理】下激活该账号

  3. 创建团队: 团队是用来做权限控制的,只有在这个团队里的成员才能看到团队下的项目。所以需要先创建一个团队来承载项目,便于管理。

  4. 创建项目: 根据提示创建项目,创建过程会持续进行2分钟左右,系统需要自动创建今天的数据库表。创建成功后会跳转到探针部署页

  5. 探针代码部署(推荐使用方式一):复制生成的探针代码,放置到项目的入口页面最上方,或者单独放置一个w.js文件引入

  6. 传入userId: 在项目的生命周期内传入即可

    window.localStorage.wmUserInfo = JSON.stringify({ userId: 'userId', secondUserParam: '开发者1,开发者2', userTag: 'tag', projectVersion: '1.0.1' })

    参数解释:1. 用户的userId,是让你们用来查找用户的,必传;2. 项目开发者secondUserParam,用来进行企微机器人预警@开发者使用,必传;3. 用户的tag,这个是用户的标签(比如:角色A、公司B等等);4. 项目版本号(projectVersion),是用来让查看项目每个版本号还有多少人在访问的。

目前未解决的问题

  1. 自定义报错收集中目前未对外暴露探针ID标识,无法针对项目进行预警,下一版本更新后可解决