数据收集器,专门收集服务中的数据转化为指标,弥补cat的搜索能力

wangs a531ca5365 Merge branch 'feature_mysqlToElasticSearch' of elabFrameworkCore/jay-monitor-data-web into master %!s(int64=2) %!d(string=hai) anos
env 6e928f83e7 重构项目 %!s(int64=4) %!d(string=hai) anos
jay-monitor-data-api e64f217d2e 告警分组的核心代码 %!s(int64=2) %!d(string=hai) anos
jay-monitor-data-client e64f217d2e 告警分组的核心代码 %!s(int64=2) %!d(string=hai) anos
jay-monitor-data-core e64f217d2e 告警分组的核心代码 %!s(int64=2) %!d(string=hai) anos
jay-monitor-data-server 57ce0f9a9a 漏洞版本升级 %!s(int64=2) %!d(string=hai) anos
README.md 9ee1ff6379 告警功能重构成分组告警,强化告警功能 %!s(int64=3) %!d(string=hai) anos
pom.xml 7b3ef6bd8a 漏洞版本升级 %!s(int64=2) %!d(string=hai) anos
数据调度监控.md 7b8155699e 提交一版 %!s(int64=3) %!d(string=hai) anos

README.md

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作为传输层,所以性能调整参数需要在启动脚本中配置:

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

分别对应:

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

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

比如启动命令:

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 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 : 后端服务地址定义

常用的方法使用:

// 将后端传过来的数字进行转义成文本,到对应的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%';
临时方案
set global max_allowed_packet = 50 * 1024 * 1024;