返回

用心构建实时分析及报警系统:钉钉前端实战指南

前端

作为互联网产品的重要组成部分,前端系统往往具有复杂度高、迭代频繁等特点。为了保证前端系统的稳定运行,实时分析及报警系统必不可少。本文将结合钉钉前端团队的实战经验,深入浅出地介绍如何设计一套实时分析及报警系统,以帮助广大开发人员应对复杂的监控需求。

### 前言
本文来自 2020 年 4 月 25 日,前端早早聊第五届“前端搞监控”专场分享嘉宾——钉钉前端团队监控负责人烛象(slashhuang)的分享实录《钉钉前端——如何设计前端实时分析及报警系统》。

## 钉钉前端监控系统的架构

钉钉前端监控系统是一个分布式系统,主要由数据采集、数据存储、数据分析和报警通知四个部分组成。

### 1. 数据采集

数据采集是监控系统的第一步,也是最关键的一步。钉钉前端监控系统的数据采集主要依靠前端埋点来实现。

#### 1.1 前端埋点

前端埋点是指在前端代码中加入代码,以便于将前端系统运行时的数据收集起来。钉钉前端监控系统提供了多种埋点方式,包括:

- 手动埋点:开发人员在代码中手动添加埋点代码。
- 无埋点:通过自动检测的方式收集数据。
- SDK 埋点:通过使用钉钉前端监控系统提供的 SDK 来收集数据。

#### 1.2 埋点数据

埋点数据通常包括以下几个方面:

- 事件类型:指发生的行为,如页面加载、点击、滑动等。
- 事件参数:事件发生时的一些参数,如页面 URL、按钮 ID、滑动距离等。
- 时间戳:事件发生的时间。
- 用户信息:用户信息,如用户 ID、用户名称等。

### 2. 数据存储

数据存储是监控系统的重要组成部分,也是钉钉前端监控系统中非常关键的一环。钉钉前端监控系统的数据存储主要分为两部分:

#### 2.1 在线存储

在线存储主要用于存储实时数据,如最近一分钟、最近一小时的数据。钉钉前端监控系统使用 Redis 作为在线存储。

#### 2.2 离线存储

离线存储主要用于存储历史数据,如最近一天、最近一周的数据。钉钉前端监控系统使用 ClickHouse 作为离线存储。

### 3. 数据分析

数据分析是监控系统的重要组成部分,也是钉钉前端监控系统中非常关键的一环。钉钉前端监控系统的数据分析主要分为两部分:

#### 3.1 实时分析

实时分析是指对实时数据进行分析,以便于发现问题。钉钉前端监控系统使用 Flink 实时计算框架来进行实时分析。

#### 3.2 离线分析

离线分析是指对历史数据进行分析,以便于发现问题。钉钉前端监控系统使用 Hive 离线计算框架来进行离线分析。

### 4. 报警通知

报警通知是监控系统的重要组成部分,也是钉钉前端监控系统中非常关键的一环。钉钉前端监控系统支持多种报警通知方式,包括:

- 邮件通知
- 短信通知
- 微信通知
- 钉钉通知

## 钉钉前端监控系统的挑战与解决方案

在构建钉钉前端监控系统的过程中,我们面临了许多挑战。这些挑战主要包括:

### 1. 数据量大

钉钉前端系统每天产生的数据量非常大,这给数据采集、数据存储、数据分析和报警通知带来了很大的挑战。

#### 1.1 解决方案

为了应对数据量大的挑战,我们采用了以下解决方案:

- **使用分布式系统** :我们使用分布式系统来存储和分析数据,以提高系统的性能和可靠性。
- **使用在线和离线存储** :我们将数据分为实时数据和历史数据,分别存储在在线存储和离线存储中。这种方式可以提高系统的性能和降低成本。
- **使用 Flink 和 Hive** :我们使用 Flink 和 Hive 来进行实时分析和离线分析。这两种计算框架都具有高性能和高可靠性。

### 2. 指标众多

钉钉前端系统有很多指标,这些指标涵盖了前端系统的各个方面。如何对这些指标进行分类和管理,是一个很大的挑战。

#### 2.1 解决方案

为了应对指标众多的挑战,我们采用了以下解决方案:

- **指标分类** :我们将指标分为几个大类,每个大类下又分为几个小类。这种分类方式可以帮助我们更好地管理和分析指标。
- **指标管理** :我们开发了指标管理系统,以便于对指标进行管理。指标管理系统可以帮助我们对指标进行添加、删除、修改和查询。

### 3. 报警规则复杂

钉钉前端系统有许多报警规则,这些报警规则涵盖了前端系统的各个方面。如何管理和维护这些报警规则,是一个很大的挑战。

#### 3.1 解决方案

为了应对报警规则复杂的挑战,我们采用了以下解决方案:

- **报警规则分类** :我们将报警规则分为几个大类,每个大类下又分为几个小类。这种分类方式可以帮助我们更好地管理和维护报警规则。
- **报警规则管理** :我们开发了报警规则管理系统,以便于对报警规则进行管理。报警规则管理系统可以帮助我们对报警规则进行添加、删除、修改和查询。

## 总结

钉钉前端监控系统是一个分布式系统,主要由数据采集、数据存储、数据分析和报警通知四个部分组成。在构建钉钉前端监控系统的过程中,我们面临了许多挑战。这些挑战主要包括:数据量大、指标众多、报警规则复杂等。为了应对这些挑战,我们采用了分布式系统、在线和离线存储、Flink 和 Hive、指标分类、指标管理、报警规则分类和报警规则管理等解决方案。

我们希望这篇文章能够对您有所帮助。如果您有任何问题,请随时与我们联系。