[monitor] 告警结构duration持续时间变更为times触发次数

This commit is contained in:
tomsun28
2021-12-13 15:22:16 +08:00
parent e22dcf30bc
commit caf3e9fef9
8 changed files with 51 additions and 49 deletions

View File

@@ -72,7 +72,7 @@ public class CalculateAlarm {
.monitorId(monitorId) .monitorId(monitorId)
.priority((byte) 0) .priority((byte) 0)
.status((byte) 0) .status((byte) 0)
.duration(300); .times(1);
if (metricsData.getCode() == CollectRep.Code.UN_REACHABLE) { if (metricsData.getCode() == CollectRep.Code.UN_REACHABLE) {
// UN_REACHABLE 对端不可达(网络层icmp) // UN_REACHABLE 对端不可达(网络层icmp)
alertBuilder.target(CommonConstants.REACHABLE) alertBuilder.target(CommonConstants.REACHABLE)
@@ -139,7 +139,7 @@ public class CalculateAlarm {
.priority(define.getPriority()) .priority(define.getPriority())
.status((byte) 0) .status((byte) 0)
.target(app + "." + metrics + "." + define.getField()) .target(app + "." + metrics + "." + define.getField())
.duration(define.getDuration()) .times(1)
// 模板中关键字匹配替换 // 模板中关键字匹配替换
.content(AlertTemplateUtil.render(define.getTemplate(), fieldValueMap)) .content(AlertTemplateUtil.render(define.getTemplate(), fieldValueMap))
.build(); .build();

View File

@@ -41,42 +41,44 @@ public class Alert {
@ApiModelProperty(value = "告警记录实体主键索引ID", example = "87584674384", accessMode = READ_ONLY, position = 0) @ApiModelProperty(value = "告警记录实体主键索引ID", example = "87584674384", accessMode = READ_ONLY, position = 0)
private Long id; private Long id;
@ApiModelProperty(value = "告警监控对象ID", example = "87432674336", accessMode = READ_WRITE, position = 1) @ApiModelProperty(value = "告警目标对象: 监控可用性-available 指标-app.metrics.field",
example = "1", accessMode = READ_WRITE, position = 1)
@Length(max = 255)
private String target;
@ApiModelProperty(value = "告警对象关联的监控ID", example = "87432674336", accessMode = READ_WRITE, position = 2)
private Long monitorId; private Long monitorId;
@ApiModelProperty(value = "告警监控对象名称", example = "87432674336", accessMode = READ_WRITE, position = 2) @ApiModelProperty(value = "告警对象关联的监控名称", example = "Linux_192.132.23.1",
accessMode = READ_WRITE, position = 3)
private String monitorName; private String monitorName;
@ApiModelProperty(value = "告警关联的告警定义ID", example = "8743267443543", accessMode = READ_WRITE, position = 4)
private Long alertDefineId;
@ApiModelProperty(value = "告警级别 0:高-emergency-紧急告警-红色 1:中-critical-严重告警-橙色 2:低-warning-警告告警-黄色", @ApiModelProperty(value = "告警级别 0:高-emergency-紧急告警-红色 1:中-critical-严重告警-橙色 2:低-warning-警告告警-黄色",
example = "1", accessMode = READ_WRITE, position = 3) example = "1", accessMode = READ_WRITE, position = 5)
@Min(0) @Min(0)
@Max(2) @Max(2)
private byte priority; private byte priority;
@ApiModelProperty(value = "告警通知实际内容", example = "linux_192.134.32.1: 534543534 cpu usage high",
accessMode = READ_WRITE, position = 6)
@Length(max = 1024)
private String content;
@ApiModelProperty(value = "告警状态: 0-待发送 1-已发送 2-已过期(已经超过持续时间)", @ApiModelProperty(value = "告警状态: 0-待发送 1-已发送 2-已过期(已经超过持续时间)",
example = "1", accessMode = READ_WRITE, position = 4) example = "1", accessMode = READ_WRITE, position = 7)
@Min(0) @Min(0)
@Max(2) @Max(2)
private byte status; private byte status;
@ApiModelProperty(value = "告警目标对象: 监控可用性-available 指标-app.metrics.field", @ApiModelProperty(value = "告警阈值触发次数", example = "3", accessMode = READ_WRITE, position = 8)
example = "1", accessMode = READ_WRITE, position = 4)
@Length(max = 255)
private String target;
@ApiModelProperty(value = "触发告警后持续时间,单位s", example = "60", accessMode = READ_WRITE, position = 7)
@Min(0) @Min(0)
private int duration; @Max(10)
private int times;
@ApiModelProperty(value = "告警通知实际内容", example = "linux_192.134.32.1: 534543534 cpu usage high", @ApiModelProperty(value = "告警触发时间(毫秒时间戳)", example = "1612198922000", accessMode = READ_ONLY, position = 9)
accessMode = READ_WRITE, position = 10)
@Length(max = 1024)
private String content;
/**
* 记录创建时间
*/
@ApiModelProperty(value = "记录创建时间(毫秒时间戳)", example = "1612198922000", accessMode = READ_ONLY, position = 13)
@Column(insertable = false, updatable = false) @Column(insertable = false, updatable = false)
private LocalDateTime gmtCreate; private LocalDateTime gmtCreate;

View File

@@ -57,7 +57,7 @@ public class AlertDefine {
@NotNull @NotNull
private String field; private String field;
@ApiModelProperty(value = "是否是默认预置告警", example = "false", accessMode = READ_WRITE, position = 4) @ApiModelProperty(value = "是否是全局默认告警", example = "false", accessMode = READ_WRITE, position = 4)
private boolean preset; private boolean preset;
@ApiModelProperty(value = "告警阈值触发条件表达式", example = "usage>90", accessMode = READ_WRITE, position = 5) @ApiModelProperty(value = "告警阈值触发条件表达式", example = "usage>90", accessMode = READ_WRITE, position = 5)
@@ -70,9 +70,10 @@ public class AlertDefine {
@Max(2) @Max(2)
private byte priority; private byte priority;
@ApiModelProperty(value = "触发告警后持续时间,单位s", example = "60", accessMode = READ_WRITE, position = 7) @ApiModelProperty(value = "阈值触发次数,即达到次数要求后才触发告警", example = "3", accessMode = READ_WRITE, position = 7)
@Min(0) @Min(0)
private int duration; @Max(10)
private int times;
@ApiModelProperty(value = "告警阈值开关", example = "true", accessMode = READ_WRITE, position = 8) @ApiModelProperty(value = "告警阈值开关", example = "true", accessMode = READ_WRITE, position = 8)
private boolean enable = true; private boolean enable = true;

View File

@@ -74,10 +74,10 @@ CREATE TABLE alert_define
app varchar(100) not null comment '配置告警的监控类型:linux,mysql,jvm...', app varchar(100) not null comment '配置告警的监控类型:linux,mysql,jvm...',
metric varchar(100) not null comment '配置告警的指标集合:cpu,memory,info...', metric varchar(100) not null comment '配置告警的指标集合:cpu,memory,info...',
field varchar(100) not null comment '配置告警的指标:usage,cores...', field varchar(100) not null comment '配置告警的指标:usage,cores...',
preset boolean not null default false comment '是否是默认预置告警,是则新增监控默认关联此告警', preset boolean not null default false comment '是否是全局默认告警,是则所有此类型监控默认关联此告警',
expr varchar(255) not null comment '告警触发条件表达式', expr varchar(255) not null comment '告警触发条件表达式',
priority tinyint not null default 0 comment '告警级别 0:高-emergency-紧急告警-红色 1:中-critical-严重告警-橙色 2:低-warning-警告告警-黄色', priority tinyint not null default 0 comment '告警级别 0:高-emergency-紧急告警-红色 1:中-critical-严重告警-橙色 2:低-warning-警告告警-黄色',
duration int not null comment '触发告警后持续时间,单位s', times int not null default 1 comment '触发次数,即达到触发阈值次数要求后才算触发告警',
enable boolean not null default true comment '告警阈值开关', enable boolean not null default true comment '告警阈值开关',
template varchar(255) not null comment '告警通知模板内容', template varchar(255) not null comment '告警通知模板内容',
creator varchar(100) comment '创建者', creator varchar(100) comment '创建者',
@@ -110,13 +110,14 @@ DROP TABLE IF EXISTS alert ;
CREATE TABLE alert CREATE TABLE alert
( (
id bigint not null auto_increment comment '告警ID', id bigint not null auto_increment comment '告警ID',
monitor_id bigint not null comment '告警监控对象ID',
monitor_name varchar(100) comment '告警监控对象名称',
priority tinyint not null default 0 comment '告警级别 0:高-emergency-紧急告警-红色 1:中-critical-严重告警-橙色 2:低-warning-警告告警-黄色',
status tinyint not null default 0 comment '告警状态: 0-待发送 1-已发送 2-已过期(已经超过持续时间)',
target varchar(255) not null comment '告警目标对象: 监控可用性-available 指标-app.metrics.field', target varchar(255) not null comment '告警目标对象: 监控可用性-available 指标-app.metrics.field',
duration int not null comment '触发告警后持续时间,单位s', monitor_id bigint not null comment '告警对象关联的监控ID',
monitor_name varchar(100) comment '告警对象关联的监控名称',
alert_define_id bigint not null comment '告警关联的告警定义ID',
priority tinyint not null default 0 comment '告警级别 0:高-emergency-紧急告警-红色 1:中-critical-严重告警-橙色 2:低-warning-警告告警-黄色',
content varchar(255) not null comment '告警通知实际内容', content varchar(255) not null comment '告警通知实际内容',
status tinyint not null default 0 comment '告警状态: 0-待发送 1-已发送 2-已过期(已经超过持续时间)',
times int not null comment '触发次数,即达到告警定义的触发阈值次数要求后才会发告警',
gmt_create timestamp default current_timestamp comment 'create time', gmt_create timestamp default current_timestamp comment 'create time',
primary key (id) primary key (id)
) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4; ) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4;

View File

@@ -6,6 +6,6 @@ export class Alert {
priority: number = 2; priority: number = 2;
status!: number; status!: number;
content!: string; content!: string;
duration!: number; times!: number;
gmtCreate!: number; gmtCreate!: number;
} }

View File

@@ -7,7 +7,7 @@ export class AlertDefine {
expr!: string; expr!: string;
// 告警级别 0:高-emergency-紧急告警-红色 1:中-critical-严重告警-橙色 2:低-warning-警告告警-黄色 // 告警级别 0:高-emergency-紧急告警-红色 1:中-critical-严重告警-橙色 2:低-warning-警告告警-黄色
priority: number = 2; priority: number = 2;
duration: number = 600; times: number = 3;
enable: boolean = true; enable: boolean = true;
template!: string; template!: string;
creator!: string; creator!: string;

View File

@@ -34,12 +34,11 @@
<thead> <thead>
<tr> <tr>
<th nzAlign="center" nzLeft nzWidth="60px" [(nzChecked)]="checkedAll" (nzCheckedChange)="onAllChecked($event)"></th> <th nzAlign="center" nzLeft nzWidth="60px" [(nzChecked)]="checkedAll" (nzCheckedChange)="onAllChecked($event)"></th>
<th nzAlign="center">告警对象</th> <th nzAlign="center">告警指标</th>
<th nzAlign="center">所属监控</th> <th nzAlign="center">所属监控</th>
<th nzAlign="center">级别</th> <th nzAlign="center">级别</th>
<th nzAlign="center">告警内容</th> <th nzAlign="center">告警内容</th>
<th nzAlign="center">触发时间</th> <th nzAlign="center">告警时间</th>
<th nzAlign="center">持续时间</th>
<th nzAlign="center" nzRight>操作</th> <th nzAlign="center" nzRight>操作</th>
</tr> </tr>
</thead> </thead>
@@ -68,7 +67,6 @@
</td> </td>
<td nzAlign="center">{{ data.content }}</td> <td nzAlign="center">{{ data.content }}</td>
<td nzAlign="center">{{ data.gmtCreate }}</td> <td nzAlign="center">{{ data.gmtCreate }}</td>
<td nzAlign="center">{{ data.duration }}</td>
<td nzAlign="center" nzRight> <td nzAlign="center" nzRight>
<button nz-button nzType="primary" (click)="onRestoreOneAlert(data.id)"> <button nz-button nzType="primary" (click)="onRestoreOneAlert(data.id)">
<i nz-icon nzType="up-circle" nzTheme="outline"></i> <i nz-icon nzType="up-circle" nzTheme="outline"></i>

View File

@@ -41,9 +41,9 @@
<th nzAlign="center">指标对象</th> <th nzAlign="center">指标对象</th>
<th nzAlign="center">阈值触发表达式</th> <th nzAlign="center">阈值触发表达式</th>
<th nzAlign="center">告警级别</th> <th nzAlign="center">告警级别</th>
<th nzAlign="center">持续时间</th> <th nzAlign="center">触发次数</th>
<th nzAlign="center">通知模版</th> <th nzAlign="center">通知模版</th>
<th nzAlign="center">预置默认</th> <th nzAlign="center">全局默认</th>
<th nzAlign="center">最新修改时间</th> <th nzAlign="center">最新修改时间</th>
<th nzAlign="center" nzRight>操作</th> <th nzAlign="center" nzRight>操作</th>
</tr> </tr>
@@ -71,7 +71,7 @@
<span>警告告警</span> <span>警告告警</span>
</nz-tag> </nz-tag>
</td> </td>
<td nzAlign="center">{{ data.duration + 's' }}</td> <td nzAlign="center">{{ data.times }}</td>
<td nzAlign="center">{{ data.template }}</td> <td nzAlign="center">{{ data.template }}</td>
<td nzAlign="center"> <td nzAlign="center">
<nz-tag *ngIf="data.preset" nzColor="green"> <nz-tag *ngIf="data.preset" nzColor="green">
@@ -149,10 +149,10 @@
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
<nz-form-item> <nz-form-item>
<nz-form-label nzSpan="7" nzRequired="true" nzFor= "duration">持续时间</nz-form-label> <nz-form-label nzSpan="7" nzRequired="true" nzFor= "duration">触发次数</nz-form-label>
<nz-form-control nzSpan="8"> <nz-form-control nzSpan="8">
<nz-input-number [(ngModel)]="define.duration" [nzMin]="10" [nzMax]="10000" [nzStep]="10" <nz-input-number [(ngModel)]="define.times" [nzMin]="1" [nzMax]="10" [nzStep]="1"
name="duration" id="duration" nzPlaceHolder="请输入告警的持续时间"> name="duration" id="duration" nzPlaceHolder="触发几次后告警">
</nz-input-number> </nz-input-number>
</nz-form-control> </nz-form-control>
</nz-form-item > </nz-form-item >
@@ -167,7 +167,7 @@
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
<nz-form-item> <nz-form-item>
<nz-form-label nzSpan="7" nzRequired="true" nzFor= "preset">默认预置</nz-form-label> <nz-form-label nzSpan="7" nzRequired="true" nzFor= "preset">全局默认</nz-form-label>
<nz-form-control nzSpan="8"> <nz-form-control nzSpan="8">
<nz-switch [(ngModel)]="define.preset" name="preset" id="preset"></nz-switch> <nz-switch [(ngModel)]="define.preset" name="preset" id="preset"></nz-switch>
</nz-form-control> </nz-form-control>