前端md5加密_Ohbug 前端监控系统开源第二弹

bb859cbf6bcb85d0fcf7202570ca24d2.png

这里是 Ohbug 开源计划第二弹。第一弹的 Ohbug SDK 我们已经可以收集到数据,这一弹聊一聊数据的处理。

依据数据的流向,我大概绘制了一个架构图:

db153e07c43e18b6c4f8fdc14ff8b5dd.png

这里解释一下几个核心模块的功能:

  • SDK:数据采集 SDK
  • Transfer: 数据接收、预处理
  • Manager:任务管理,包括 Event 聚合、存取 Event、存取 Issue、通知任务的生成
  • Notifier:通知任务的执行,包括 email、webpush、webhook
  • Dashboard:控制台 API 的实现

可能图片解释的不够清楚,这里还是系统介绍一下:

Transfer

首先看一眼 Event 的数据结构:

interface OhbugEvent<D> {
  apiKey: string
  appVersion?: string
  appType?: string
  releaseStage?: OhbugReleaseStage
  timestamp: string
  category?: OhbugCategory
  type: string
  sdk: OhbugSDK

  detail: D
  device: OhbugDevice
  user?: OhbugUser
  actions?: OhbugAction[]
  metaData?: any
}

Event 通过 SDK 收集上来以后,通过 Nginx 转发给 Transfer

为了方便存储,Transfer 需要对不确定数据类型的字段预处理为字符串,这里转化 detail actions metaData 三个字段。 具体转化的细节可见源码 formatter。

之后将预处理后的 Event 给到 Manager

Manager

Manager 收到 Transfer 传来的 Event 后,首先对 Event 进行聚合,聚合的目的是将相同的 Event 合并,毕竟数据展示时不希望看到一堆相同的问题占据视野。

聚合的思路是根据数据结构对 Event 进行解构,例如 Fetch 的异常就取出 url, method, data 这些数据,通过 md5 加密后得到聚合的依据 intro

case FETCH_ERROR:
  return {
    agg: [detail.req.url, detail.req.method, detail.req.data],
    metadata: {
      type,
      message: detail.req.url,
      others: detail.req.method,
    },
  };

得到了 intro 就可以将相同 introEvent 合并到一个数据集里,我们称每一个数据集为 Issue,然后就可以将数据持久化存储了。

Event 的存储通过 kafka 通知到 logstash,logstash 存入 elasticsearch

Issue 的存储则直接使用 postgresql,另外 Ohbug 使用 typeorm 来操作 postgresql,好处是方便做数据库之间的迁移。

Notifier

Manager 在完成 Issue 的存储后,会判断当前条件是否符合通知规则,再将 Issue 与通知内容一起传给 Notifier

Notifier 的工作就是就收到任务后触发指定通知,包括 email、webpush、webhook 的发送/触发。

ebd28ea45e70fbb24a9dd78c22512866.png

e390e492dad0796da731ce2b1b723469.png

Dashboard

Dashboard 为控制台整体流程的提供支持。主要工作是为控制台前端提供数据,例如下图

478ff7251a2356ca0321439bc85884cc.png

另外 Issue 对应的 Event 数据通过 elasticsearch 获取:

97e949ac9449835436c52fc1ecc7d0e7.png

除此之外 Dashboard 还实现了用户系统、团队、项目、通知、SourceMap 的增删改查。

关于 Dashboard 的实现其实还有很多东西可以聊,以后可以单独拿出一篇单聊。

结语

目前的实现还是属于比较基础的数据采集分析产品,以后还有许多可拓展的方向,如果你出于平台数据安全的考虑,Ohbug 也支持本地部署。

一个人的力量有限,我们拥抱开源一方面也是为了集中力量办事,希望有更多开发者加入进来,完善 Ohbug

上述所提及的内容均以开源 Ohbug Server,如果你想抢先体验可以试用 Ohbug 官方服务。 更多内容可见 Ohbug Docs。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值