Modify monitoring and add transaction support. (#88)
* feat: MonitorsController Chinese and English support #huacheng * feat: [manager]feature:Delete notification operation compatibility query is empty #huacheng * feat: [manager,alert,collector,common]feature:Modify monitoring and add transaction support. Monitoring compatible with Chinese and English #wqh Co-authored-by: tomsun28 <tomsun28@outlook.com>
This commit is contained in:
@@ -6,8 +6,12 @@ import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* Monitoring configuration parameter properties and values
|
||||
* 监控配置参数属性及值
|
||||
* During the process, you need to replace the content with the identifier ^_^key^_^
|
||||
* in the protocol configuration parameter with the real value in the configuration parameter
|
||||
* 过程中需要将协议配置参数里面的标识符为^_^key^_^的内容替换为配置参数里的真实值
|
||||
*
|
||||
* @author tomsun28
|
||||
* @date 2021/10/29 22:04
|
||||
*/
|
||||
@@ -18,16 +22,20 @@ import lombok.NoArgsConstructor;
|
||||
public class Configmap {
|
||||
|
||||
/**
|
||||
* Parameter key, replace the content with the identifier ^^_key_^^ in the protocol
|
||||
* configuration parameter with the real value in the configuration parameter
|
||||
* <p>
|
||||
* 参数key,将协议配置参数里面的标识符为^^_key_^^的内容替换为配置参数里的真实值
|
||||
*/
|
||||
private String key;
|
||||
|
||||
/**
|
||||
* 参数value
|
||||
* parameter value 参数value
|
||||
*/
|
||||
private Object value;
|
||||
|
||||
/**
|
||||
* Parameter type 0: number 1: string 2: encrypted string 3: json string mapped by map
|
||||
* 参数类型 0:数字 1:字符串 2:加密串 3:map映射的json串
|
||||
* number,string,secret
|
||||
* 数字,非加密字符串,加密字符串
|
||||
|
||||
@@ -21,7 +21,9 @@ import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Collect task details
|
||||
* 采集任务详情
|
||||
*
|
||||
* @author tomsun28
|
||||
* @date 2021/10/17 21:19
|
||||
*/
|
||||
@@ -35,61 +37,72 @@ public class Job {
|
||||
private static final String AVAILABILITY = "availability";
|
||||
|
||||
/**
|
||||
* 任务ID
|
||||
* Task id 任务ID
|
||||
*/
|
||||
private long id;
|
||||
/**
|
||||
* Monitoring ID Application ID
|
||||
* 监控ID 应用ID
|
||||
*/
|
||||
private long monitorId;
|
||||
/**
|
||||
* 监控的大类别
|
||||
* Large categories of monitoring 监控的大类别
|
||||
* service-application service monitoring db-database monitoring custom-custom monitoring os-operating system monitoring
|
||||
* service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控
|
||||
*/
|
||||
private String category;
|
||||
/**
|
||||
* Type of monitoring eg: linux | mysql | jvm
|
||||
* 监控的类型 eg: linux | mysql | jvm
|
||||
*/
|
||||
private String app;
|
||||
/**
|
||||
* 监控类型的国际化名称
|
||||
* The internationalized name of the monitoring type 监控类型的国际化名称
|
||||
* zh-CN: PING连通性
|
||||
* en-US: PING CONNECT
|
||||
*/
|
||||
private Map<String, String> name;
|
||||
/**
|
||||
* Task dispatch start timestamp
|
||||
* 任务派发开始时间戳
|
||||
*/
|
||||
private long timestamp;
|
||||
/**
|
||||
* Task collection time interval (unit: second) eg: 30,60,600
|
||||
* 任务采集时间间隔(单位秒) eg: 30,60,600
|
||||
*/
|
||||
private long interval = 600L;
|
||||
/**
|
||||
* Whether it is a recurring periodic task true is yes, false is no
|
||||
* 是否是循环周期性任务 true为是,false为否
|
||||
*/
|
||||
private boolean isCyclic = false;
|
||||
/**
|
||||
* Indicator group configuration eg: cpu memory
|
||||
* 指标组配置 eg: cpu memory
|
||||
*/
|
||||
private List<Metrics> metrics;
|
||||
/**
|
||||
* Monitoring configuration parameter properties and values eg: username password timeout host
|
||||
* 监控配置参数属性及值 eg: username password timeout host
|
||||
*/
|
||||
private List<Configmap> configmap;
|
||||
|
||||
/**
|
||||
* collector use - timestamp when the task was scheduled by the time wheel
|
||||
* collector使用 - 任务被时间轮开始调度的时间戳
|
||||
*/
|
||||
@JsonIgnore
|
||||
private transient long dispatchTime;
|
||||
|
||||
/**
|
||||
* collector use - task version, this field is not stored in etcd
|
||||
* collector使用 - 任务版本,此字段不存储于etcd
|
||||
*/
|
||||
@JsonIgnore
|
||||
private transient long version;
|
||||
/**
|
||||
* collector usage - metric group task execution priority view
|
||||
* collector使用 - 指标组任务执行优先级视图
|
||||
* 0 - availability
|
||||
* 1 - cpu | memory
|
||||
@@ -103,27 +116,32 @@ public class Job {
|
||||
private transient List<Set<Metrics>> priorMetrics;
|
||||
|
||||
/**
|
||||
* collector use - Temporarily store one-time task indicator group response data
|
||||
* collector使用 - 临时存储一次性任务指标组响应数据
|
||||
*/
|
||||
@JsonIgnore
|
||||
private transient List<CollectRep.MetricsData> responseDataTemp;
|
||||
|
||||
/**
|
||||
* collector uses - construct to initialize metrics group execution view
|
||||
* collector使用 - 构造初始化指标组执行视图
|
||||
*/
|
||||
public synchronized void constructPriorMetrics() {
|
||||
Map<Byte, List<Metrics>> map = metrics.stream()
|
||||
.peek(metric -> {
|
||||
// Determine whether to configure aliasFields If not, configure the default
|
||||
// 判断是否配置aliasFields 没有则配置默认
|
||||
if (metric.getAliasFields() == null || metric.getAliasFields().isEmpty()) {
|
||||
metric.setAliasFields(metric.getFields().stream().map(Metrics.Field::getField).collect(Collectors.toList()));
|
||||
}
|
||||
// Set the default indicator group execution priority, if not filled, the default last priority
|
||||
// 设置默认的指标组执行优先级,不填则默认最后优先级
|
||||
if (metric.getPriority() == null) {
|
||||
metric.setPriority(Byte.MAX_VALUE);
|
||||
}
|
||||
})
|
||||
.collect(Collectors.groupingBy(Metrics::getPriority));
|
||||
// Construct a linked list of task execution order of the indicator group
|
||||
// 构造指标组任务执行顺序链表
|
||||
priorMetrics = new LinkedList<>();
|
||||
map.values().forEach(metric -> {
|
||||
@@ -141,12 +159,18 @@ public class Job {
|
||||
}
|
||||
|
||||
/**
|
||||
* collector use - to get the next set of priority metric group tasks
|
||||
* collector使用 - 获取下一组优先级的指标组任务
|
||||
* @param metrics 当前指标组
|
||||
* @param first 是否是第一次获取
|
||||
* @return 指标组任务
|
||||
*
|
||||
* @param metrics Current indicator group 当前指标组
|
||||
* @param first Is it the first time to get 是否是第一次获取
|
||||
* @return Metric Group Tasks 指标组任务
|
||||
* Returning null means: the job has been completed, and the collection of all indicator groups has ended
|
||||
* 返回null表示:job已完成,所有指标组采集结束
|
||||
* Returning the empty set indicates that there are still indicator group collection tasks at the current
|
||||
* level that have not been completed,and the next level indicator group task collection cannot be performed.
|
||||
* 返回empty的集合表示:当前级别下还有指标组采集任务未结束,无法进行下一级别的指标组任务采集
|
||||
* Returns a set of data representation: get the next set of priority index group tasks
|
||||
* 返回有数据集合表示:获取到下一组优先级的指标组任务
|
||||
*/
|
||||
public synchronized Set<Metrics> getNextCollectMetrics(Metrics metrics, boolean first) {
|
||||
@@ -189,7 +213,7 @@ public class Job {
|
||||
|
||||
@Override
|
||||
public Job clone() {
|
||||
// 深度克隆
|
||||
// deep clone 深度克隆
|
||||
return GsonUtil.fromJson(GsonUtil.toJson(this), Job.class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,10 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Details of the collection of indicators collected by monitoring
|
||||
* eg: cpu | memory | health
|
||||
* 监控采集的指标集合详情 eg: cpu | memory | health
|
||||
*
|
||||
* @author tomsun28
|
||||
* @date 2021/10/17 21:24
|
||||
*/
|
||||
@@ -26,6 +29,7 @@ import java.util.Objects;
|
||||
public class Metrics {
|
||||
|
||||
/**
|
||||
* public property-name eg: cpu | memory | health
|
||||
* 公共属性-名称 eg: cpu | memory | health
|
||||
*/
|
||||
private String name;
|
||||
@@ -34,20 +38,27 @@ public class Metrics {
|
||||
*/
|
||||
private String protocol;
|
||||
/**
|
||||
* Range (0-127) indicator group scheduling priority, the smaller the value, the higher the priority
|
||||
* The collection task of the next priority indicator group will be scheduled only after the scheduled collection with the higher priority is completed.
|
||||
* The default priority of the availability indicator group is 0, and the range of other common indicator groups is 1-127, that is,
|
||||
* the subsequent indicator group tasks will only be scheduled after the availability is collected successfully.
|
||||
* 范围(0-127)指标组调度优先级,数值越小优先级越高
|
||||
* 优先级高的调度采集完成后才会调度下一优先级的指标组采集任务
|
||||
* 可用性指标组(availability)默认优先级为0,其它普通指标组范围为1-127,即需要等availability采集成功后才会调度后面的指标组任务
|
||||
*/
|
||||
private Byte priority;
|
||||
/**
|
||||
* Public attribute - collection and monitoring final result attribute set eg: speed | times | size
|
||||
* 公共属性-采集监控的最终结果属性集合 eg: speed | times | size
|
||||
*/
|
||||
private List<Field> fields;
|
||||
/**
|
||||
* Public attribute - collection and monitoring pre-query attribute set eg: size1 | size2 | speedSize
|
||||
* 公共属性-采集监控的前置查询属性集合 eg: size1 | size2 | speedSize
|
||||
*/
|
||||
private List<String> aliasFields;
|
||||
/**
|
||||
* Public attribute - expression calculation, map the pre-query attribute (pre Fields) with the final attribute (fields), and calculate the final attribute (fields) value
|
||||
* 公共属性-表达式计算,将前置查询属性(preFields)与最终属性(fields)映射,计算出最终属性(fields)值
|
||||
* eg: size = size1 + size2, speed = speedSize
|
||||
* https://www.yuque.com/boyan-avfmj/aviatorscript/ban32m
|
||||
@@ -55,26 +66,32 @@ public class Metrics {
|
||||
private List<String> calculates;
|
||||
|
||||
/**
|
||||
* Monitoring configuration information using the http protocol
|
||||
* 使用http协议的监控配置信息
|
||||
*/
|
||||
private HttpProtocol http;
|
||||
/**
|
||||
* Monitoring configuration information for ping using the icmp protocol
|
||||
* 使用icmp协议进行ping的监控配置信息
|
||||
*/
|
||||
private IcmpProtocol icmp;
|
||||
/**
|
||||
* Monitoring configuration information using the telnet protocol
|
||||
* 使用telnet协议的监控配置信息
|
||||
*/
|
||||
private TelnetProtocol telnet;
|
||||
/**
|
||||
* Use tcp or ucp implemented by socket for service port detection configuration information
|
||||
* 使用socket实现的tcp或ucp进行服务端口探测配置信息
|
||||
*/
|
||||
private TcpUdpProtocol tcpUdp;
|
||||
/**
|
||||
* Database configuration information implemented using the public jdbc specification
|
||||
* 使用公共的jdbc规范实现的数据库配置信息
|
||||
*/
|
||||
private JdbcProtocol jdbc;
|
||||
/**
|
||||
* Monitoring configuration information using the public ssh protocol
|
||||
* 使用公共的ssh协议的监控配置信息
|
||||
*/
|
||||
private SshProtocol ssh;
|
||||
@@ -101,18 +118,22 @@ public class Metrics {
|
||||
@NoArgsConstructor
|
||||
public static class Field {
|
||||
/**
|
||||
* Indicator name
|
||||
* 指标名称
|
||||
*/
|
||||
private String field;
|
||||
/**
|
||||
* Indicator type 0-number: number 1-string: string
|
||||
* 指标类型 0-number:数字 1-string:字符串
|
||||
*/
|
||||
private byte type = 1;
|
||||
/**
|
||||
* Whether this field is the instance primary key
|
||||
* 此字段是否为实例主键
|
||||
*/
|
||||
private boolean instance = false;
|
||||
/**
|
||||
* Indicator unit
|
||||
* 指标单位
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
@@ -23,7 +23,9 @@ import static io.swagger.annotations.ApiModelProperty.AccessMode.READ_ONLY;
|
||||
import static io.swagger.annotations.ApiModelProperty.AccessMode.READ_WRITE;
|
||||
|
||||
/**
|
||||
* Monitor parameter values
|
||||
* 监控参数值
|
||||
*
|
||||
* @author tomsun28
|
||||
* @date 2021/11/13 22:19
|
||||
*/
|
||||
@@ -33,21 +35,26 @@ import static io.swagger.annotations.ApiModelProperty.AccessMode.READ_WRITE;
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ApiModel(description = "参数实体")
|
||||
@ApiModel(description = "嗯: Parameter Entity,zh: 参数实体")
|
||||
public class Param {
|
||||
|
||||
/**
|
||||
* Parameter primary key index ID
|
||||
*/
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@ApiModelProperty(value = "参数主键索引ID", example = "87584674384", accessMode = READ_ONLY, position = 0)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* Monitor ID
|
||||
* 监控ID
|
||||
*/
|
||||
@ApiModelProperty(value = "监控ID", example = "875846754543", accessMode = READ_WRITE, position = 1)
|
||||
private Long monitorId;
|
||||
|
||||
/**
|
||||
* Parameter Field Identifier
|
||||
* 参数字段标识符
|
||||
*/
|
||||
@ApiModelProperty(value = "参数标识符字段", example = "port", accessMode = READ_WRITE, position = 2)
|
||||
@@ -56,6 +63,7 @@ public class Param {
|
||||
private String field;
|
||||
|
||||
/**
|
||||
* Param Value
|
||||
* 参数值
|
||||
*/
|
||||
@ApiModelProperty(value = "参数值", example = "8080", accessMode = READ_WRITE, position = 3)
|
||||
@@ -63,6 +71,7 @@ public class Param {
|
||||
private String value;
|
||||
|
||||
/**
|
||||
* Parameter type 0: number 1: string 2: encrypted string 3: json string mapped by map
|
||||
* 参数类型 0:数字 1:字符串 2:加密串 3:map映射的json串
|
||||
*/
|
||||
@ApiModelProperty(value = "参数类型 0:数字 1:字符串 2:加密串 3:map映射的json串", accessMode = READ_WRITE, position = 4)
|
||||
@@ -71,6 +80,7 @@ public class Param {
|
||||
private byte type;
|
||||
|
||||
/**
|
||||
* Record Creation Time
|
||||
* 记录创建时间
|
||||
*/
|
||||
@ApiModelProperty(value = "记录创建时间(毫秒时间戳)", example = "1612198922000", accessMode = READ_ONLY, position = 5)
|
||||
@@ -78,6 +88,7 @@ public class Param {
|
||||
private LocalDateTime gmtCreate;
|
||||
|
||||
/**
|
||||
* Record the latest modification time
|
||||
* 记录最新修改时间
|
||||
*/
|
||||
@ApiModelProperty(value = "记录最新修改时间(毫秒时间戳)", example = "1612198444000", accessMode = READ_ONLY, position = 6)
|
||||
|
||||
@@ -1,175 +1,208 @@
|
||||
package com.usthe.common.util;
|
||||
|
||||
/**
|
||||
* Public Constant
|
||||
* 公共常量
|
||||
*
|
||||
* @author tomsun28
|
||||
* @date 2021/11/14 12:06
|
||||
*/
|
||||
public interface CommonConstants {
|
||||
|
||||
/**
|
||||
* Response status code: generic success
|
||||
* 响应状态码: 通用成功
|
||||
*/
|
||||
byte SUCCESS_CODE = 0x00;
|
||||
|
||||
/**
|
||||
* Response status code: generic failure
|
||||
* 响应状态码: 通用失败
|
||||
*/
|
||||
byte FAIL_CODE = 0x0F;
|
||||
|
||||
/**
|
||||
* Response status code: Parameter verification failed
|
||||
* 响应状态码: 参数校验失败
|
||||
*/
|
||||
byte PARAM_INVALID_CODE = 0x01;
|
||||
|
||||
/**
|
||||
* Response Status Code: Probe Failed
|
||||
* 响应状态码: 探测失败
|
||||
*/
|
||||
byte DETECT_FAILED_CODE = 0x02;
|
||||
|
||||
/**
|
||||
* Response status code: monitoring does not exist
|
||||
* 响应状态码: 监控不存在
|
||||
*/
|
||||
byte MONITOR_NOT_EXIST_CODE = 0x03;
|
||||
|
||||
/**
|
||||
* Response Status Code: Monitor Service Conflict
|
||||
* 响应状态码: 监控服务冲突
|
||||
*/
|
||||
byte MONITOR_CONFLICT_CODE = 0x04;
|
||||
|
||||
/**
|
||||
* Response status code: Incorrect login account password
|
||||
* 响应状态码: 登录账户密码错误
|
||||
*/
|
||||
byte MONITOR_LOGIN_FAILED_CODE = 0x05;
|
||||
|
||||
/**
|
||||
* Response status code: Registration failed exception
|
||||
* 响应状态码: 注册失败异常
|
||||
*/
|
||||
byte MONITOR_REGISTER_FAILED_CODE = 0x06;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Monitoring Status Code: Unmanaged
|
||||
* 监控状态码: 未管理
|
||||
*/
|
||||
byte UN_MANAGE_CODE = 0x00;
|
||||
|
||||
/**
|
||||
* Monitoring Status Code: Available
|
||||
* 监控状态码: 可用
|
||||
*/
|
||||
byte AVAILABLE_CODE = 0x01;
|
||||
|
||||
/**
|
||||
* Monitoring Status Code: Not Available
|
||||
* 监控状态码: 不可用
|
||||
*/
|
||||
byte UN_AVAILABLE_CODE = 0x02;
|
||||
|
||||
/**
|
||||
* Monitoring Status Code: Unreachable
|
||||
* 监控状态码: 不可达
|
||||
*/
|
||||
byte UN_REACHABLE_CODE = 0x03;
|
||||
|
||||
/**
|
||||
* Monitoring Status Code: Pending
|
||||
* 监控状态码: 挂起
|
||||
*/
|
||||
byte SUSPENDING_CODE = 0x04;
|
||||
|
||||
/**
|
||||
* Alarm status: 0 - normal alarm (to be processed)
|
||||
* 告警状态: 0-正常告警(待处理)
|
||||
*/
|
||||
byte ALERT_STATUS_CODE_PENDING = 0x00;
|
||||
|
||||
/**
|
||||
* Alarm Status: 1 - Threshold triggered but not reached the number of alarms
|
||||
* 告警状态: 1-阈值触发但未达到告警次数
|
||||
*/
|
||||
byte ALERT_STATUS_CODE_NOT_REACH = 0x01;
|
||||
|
||||
/**
|
||||
* Alarm Status: 2-Restore Alarm
|
||||
* 告警状态: 2-恢复告警
|
||||
*/
|
||||
byte ALERT_STATUS_CODE_RESTORED = 0x02;
|
||||
|
||||
/**
|
||||
* Alert Status: 3-Handled
|
||||
* 告警状态: 3-已处理
|
||||
*/
|
||||
byte ALERT_STATUS_CODE_SOLVED = 0x03;
|
||||
|
||||
/**
|
||||
* Alarm level: 0: high-emergency-emergency-red
|
||||
* 告警级别: 0:高-emergency-紧急告警-红色
|
||||
*/
|
||||
byte ALERT_PRIORITY_CODE_EMERGENCY = 0x00;
|
||||
|
||||
/**
|
||||
* Alarm severity: 1: medium-critical-critical alarm-orange
|
||||
* 告警级别: 1:中-critical-严重告警-橙色
|
||||
*/
|
||||
byte ALERT_PRIORITY_CODE_CRITICAL = 0x01;
|
||||
|
||||
/**
|
||||
* Warning level: 2: low-warning-warning warning-yellow
|
||||
* 告警级别: 2:低-warning-警告告警-黄色
|
||||
*/
|
||||
byte ALERT_PRIORITY_CODE_WARNING = 0x02;
|
||||
|
||||
/**
|
||||
* Field parameter type: number
|
||||
* 字段参数类型: 数字
|
||||
*/
|
||||
byte TYPE_NUMBER = 0;
|
||||
|
||||
/**
|
||||
* Field parameter type: String
|
||||
* 字段参数类型: 字符串
|
||||
*/
|
||||
byte TYPE_STRING = 1;
|
||||
|
||||
/**
|
||||
* Field parameter type: encrypted string
|
||||
* 字段参数类型: 加密字符串
|
||||
*/
|
||||
byte TYPE_SECRET = 2;
|
||||
|
||||
/**
|
||||
* Collection indicator value: null placeholder for empty value
|
||||
* 采集指标值:null空值占位符
|
||||
*/
|
||||
String NULL_VALUE = " ";
|
||||
|
||||
/**
|
||||
* Availability Object
|
||||
* 可用性对象
|
||||
*/
|
||||
String AVAILABLE = "available";
|
||||
|
||||
/**
|
||||
* 可达性对象
|
||||
* Reachability Object可达性对象
|
||||
*/
|
||||
String REACHABLE = "reachable";
|
||||
|
||||
/**
|
||||
* Parameter Type Number
|
||||
* 参数类型 数字
|
||||
*/
|
||||
byte PARAM_TYPE_NUMBER = 0;
|
||||
|
||||
/**
|
||||
* Parameter Type String
|
||||
* 参数类型 字符串
|
||||
*/
|
||||
byte PARAM_TYPE_STRING = 1;
|
||||
|
||||
/**
|
||||
* Parameter Type Password
|
||||
* 参数类型 密码
|
||||
*/
|
||||
byte PARAM_TYPE_PASSWORD = 2;
|
||||
|
||||
/**
|
||||
* Authentication type Account password
|
||||
* 认证类型 账户密码
|
||||
*/
|
||||
byte AUTH_TYPE_PASSWORD = 1;
|
||||
|
||||
/**
|
||||
* Authentication type GITHUB three-party login
|
||||
* 认证类型 GITHUB三方登录
|
||||
*/
|
||||
byte AUTH_TYPE_GITHUB = 2;
|
||||
|
||||
/**
|
||||
* Authentication type WeChat three-party login
|
||||
* 认证类型 微信三方登录
|
||||
*/
|
||||
byte AUTH_TYPE_WEIXIN = 3;
|
||||
|
||||
/**
|
||||
* Authentication type GITEE three-party login
|
||||
* 认证类型 GITEE三方登录
|
||||
*/
|
||||
byte AUTH_TYPE_GITEE = 5;
|
||||
|
||||
Reference in New Issue
Block a user