# jay-monitor-data-web - 数据收集器

## 后台服务分层

**jay-monitor-data-api**

对外暴露接口层

**jay-monitor-data-client**

客户端集成工具

**jay-monitor-data-core**

核心通用部分封装

**jay-monitor-data-server**

服务启动器:

- 控制台访问
- 数据收集计算 
- 数据的存储
  - Mysql - 表是按照天的纬度划分存储
  - 本地文件 - 存储大文本
  - 可拓展成自定义的引擎存储
- 告警推送
  - 目前默认是钉钉
- 集成OSS文件传输服务
- 目前收集的数据类型
  - URL
  - MQ

开发步骤:
1. 设计表
2. 设计传输实体
3. 构建process包下执行器
4. 构建store包下的存储器
5. 注册配置文件中的拆分器




## 通用的拓展
1. 分组关系聚合类: `com.jay.monitor.data.server.componts.GroupFactory`

2. 消费线程类: `com.jay.monitor.data.server.componts.TaskSmartLifecycle`





















## 开发注意事项

由于该应用是用的是蚂蚁金服的solt作为传输层,所以性能调整参数需要在启动脚本中配置:

```shell
-Dbolt.tp.min=500 -Dbolt.tp.max=1000 -Dbolt.tp.queue=1000
```

分别对应:

- bolt.tp.min 	: 核心线最小程池
- bolt.tp.max     : 核心线最大程池大小
- bolt.tp.queue  : 等待队列大小

> 启动的时候会打印当前应用的使用情况。

比如启动命令:

```shell
java -jar -Dbolt.tp.min=500 -Dbolt.tp.max=1000 -Dbolt.tp.queue=1000 jay-monitor-data-server.jar
```

#### 1. 页面存放位置

resource/templates

#### 2. 开发介绍

#### 公共页面

base文件夹代表公共页面,由于主页面是采用Iframe构造,所以只需要关心中间页面的开发。

中心页面的公共JS和CSS被独立出来放在了base文件夹下。

引用公共页面参考

```html
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/web/thymeleaf/layout" layout:decorator="~{/base/main}">
```

>  案例参考 : routeList.html

#### 公共js

存放位置 : resources/static/js

**elab-common.js** : 封装了前端操作LayUI的一些方法以及文本值的转换工具类。

**elab-config.js** : 后端参数枚举值解码,调用方式参考`elab-common.js`

**elab-service-config.js** : 后端服务地址定义

#### 常用的方法使用:

```js
// 将后端传过来的数字进行转义成文本,到对应的elab-config中定义
elab_common.getConfigTypeText("route_valid_status", res.isValid)
// 获取枚举值中request_method的所有值,渲染到页面id为methodSelect中,展现成下拉框
elab_common.getConfigTypeBySelect("#methodSelect", "request_method", "");
// 获取枚举值中checkRule的所有值,渲染到页面id为checkRuleDiv中,展现成checkbox,第三个参数是默认选中的数组
elab_common.getConfigTypeByCheckBox("#checkRuleDiv", "route_check_rule", "checkRule", checkRule)
// 将后端传过来的数据为时间戳的转换成时分秒
elab_common.longConvertDateTime(res.created)
// post请求后端地址
elab_common.postReq(urlConfig.route.refreshService, data.field, function (data) {})
```

Mysql 注意事项:

 You can change this value on the server by setting the max_allowed_packet' variable.
1. 配置方面希望加大`max_allowed_packet`参数,由于SQL是批量执行的,可以会比较大。
```mysql
[mysqld]
max_allowed_packet = 50M # 也可以继续调大点
```
查看配置:
```sql
show variables like '%max_allowed_pack%';
```

##### 临时方案
```sql
set global max_allowed_packet = 50 * 1024 * 1024;
```