# 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. 注册配置文件中的拆分器













## 





















## 开发注意事项

由于该应用是用的是蚂蚁金服的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;
```




