1. 配置:预警规则表--AlarmRule

long类型为了兼容rom.

字段名

类型

是否为空

是否索引

备注

Id---[主键]

long

-主键索引

自增

RuleNo

long

发号器发的,唯一性

RuleTitle

string

标题名称

DataSourceType

Int

否【只能初始化、禁止修改】

数据来源枚举

1.SLS

2.Sql

3.WebHook【简易的连通性检查】

4.DLL-RUN【复制的计算/第三方接口对接】

 

ConditionExpression

string

是【可以为空】

(condition1&&condition2)

Cron

string

Cron表达式

 

 

 

 

CreateTime

datetime

 

UpdateTime

datetime

 

LastUpdateUser

string

最后一次更新用户

IsDelete

bit

 

Remark

string

规则描述

 

 

2. 配置:预警规则下条件表--AlarmCondition【一对多】

一个预警规则下多个条件。

Condition修改,则Alarm与随之修改更新时间。

 

字段名

类型

是否为空

是否索引

备注

Id---[主键]

long

-主键索引

自增

ConditionNo

long

发号器发的,唯一性

ConditionTitle

string

标题名称

RuleNo

long

预警规则表Id

JudgType

int

条件判断类型枚举:

1.直接判断【单一返回值】

2.条件判断【单一返回值】

3.复杂判断

Oper

int

是【复杂判断是为空】

操作符

=

>

<

>=

<=

CompareValue

String

是【复杂判断是为空】

系统字段将字符串转义成longdoubleintstring等类型

CSharpLinq

String

是【只有复杂判断有值】

只有复杂判断有值。

C#linq表达式

CreateTime

datetime

 

UpdateTime

datetime

 

LastUpdateUser

string

最后一次更新用户

IsDelete

bit

 

Remark

string

规则描述

 

3.配置:条件下数据单元表--DataUnit11

一个预警规则下多个条件,一个条件下有1个数据单元。

DataUnit修改则Condition修改更新时间,Alarm也与随之修改更新时间。

 

字段名

类型

是否为空

是否索引

备注

Id---[主键]

long

-主键索引

自增

RuleNo

long

预警规则表Id

 

ConditionNo

long

预警规则下条件表id

DataUnitTitle

String

标题名称

DataSourceType

Int

否【和alarmrule保持一致】

数据来源枚举

1.SLS

2.Sql

3.WebHook【简易的连通性检查】

4.DLL-RUN【复制的计算/第三方接口对接】

 

SqlOrCmd

String

语句\类库

ReturnTFileds【列名、列序极为重要】

String

Json数组字符串,定义属性。系统自动生成类。

类名为ruleno_dataunitid

{Id:int,Sex :bool}

 

AlarmMsgHaveValueFileds

String

扩展预警信息【T中的某个字段】

Sex,Id

CreateTime

datetime

 

UpdateTime

datetime

 

LastUpdateUser

string

最后一次更新用户

IsDelete

bit

 

Remark

string

规则描述

 

3. 计算单元ActionNode

由计算单元ActionNode主动向中心注册,提供自身的信息和健康检查api接口【或心跳也行】。

保持grpc通信。 原本想socket,但是socket还要加socket组件,增加复杂性。

ActionNodeNo是配置在配置文件中的。

 

对于中心来说,只有数据库配置的NodeNo才能使用,鉴权暂时不走token,提供一个password就行,内网的话,这个也省掉。

 

字段名

类型

是否为空

是否索引

备注

Id---[主键]

int

-主键索引

自增

ActionNodeNo

int

配置文件中设置编号

IP

string

IP

ComputerName

string

机器名称

HealthApi

string

健康检查接口

Password

string

是【暂时为空】

后期ak鉴权字段

CreateTime

datetime

 

UpdateTime

datetime

 

LastUpdateUser

string

最后一次更新用户

IsDelete

bit

 

Remark

string

规则描述

 

4. 生成:任务表--AlarmTask

任务生成器,通过对AlarmRuleCron周期性执行【延时队列】,将任务生成并入库。

任务比告警还多,TaskNo改为guid-N

 

字段名

类型

是否为空

是否索引

备注

Id---[主键]

long

-主键索引

自增

RuleNo

long

预警规则表Id

 

TaskNo

string

任务编号

ActionNodeNo

long

分派给哪个ActionNode计算

IsClaimed

Bit

是否被认领

IsComplete

Bit

是否完成

CreateTime

datetime

 

UpdateTime

datetime

 

LastUpdateUser

string

最后一次更新用户

IsDelete

bit

//这里也代表被取消

Remark

string

规则描述

 

 

5. 生成:任务结果表--AlarmTaskResult

预警结果产生2条记录都放入MQ, 一条是任务结果日志, 一条是有预警--产生预警则放入MQ

 

字段名

类型

是否为空

是否索引

备注

Id---[主键]

long

-主键索引

自增

TaskNo

string

任务编号

TaskResult

String

任务执行结果信息

AlarmJstNo

long

产生了预警,预警编号

CreateTime

datetime

 

UpdateTime

datetime

 

LastUpdateUser

string

最后一次更新用户

IsDelete

bit

 

Remark

string

规则描述

 

6. 生成:告警表--AlarmJst

生成预警是走mq的,具体的预警消费是专门的预警处理端。建议单独一个。

暂时可以先写到中心节点上面。

 

AlarmJstNo预警编号设计为guid-N

 

告警显示时,是AlarmMsg+NextMsg 共同显示。也要提示CauseNextCompressCount,引发下游压缩的告警数量。

 

字段名

类型

是否为空

是否索引

备注

Id---[主键]

long

-主键索引

自增

AlarmJstNo

string

产生了预警,预警编号

RuleNo

long

[存在第三方预警平台直接对接产生预警]

预警规则表Id

 

TaskNo

string

[存在第三方预警平台直接对接产生预警]

任务编号

ExtNo

string

 

第三方预警平台Id

AlarmLevel

Int

预警等级

AlarmMsg

string

预警信息

IsClosed

Bit

是否已经被关闭

或结束

默认false

CreateTime

datetime

 

UpdateTime

datetime

 

LastUpdateUser

string

最后一次更新用户

IsDelete

bit

 

Remark

string

规则描述

 

7. 配置扩展:预警规则--青鸟绑定表--AlarmRuleQingniao

当产生了真正的告警,那么这个告警怎么通知,需要和青鸟绑定,进行通知钉钉、短信、邮件、电话。

包括限定哪个团队,哪个负责人收到通知。[这个也可能是在青鸟配好的模板,这里集成编号就行]

 

字段名

类型

是否为空

是否索引

备注

Id---[主键]

long

-主键索引

自增

RuleNo

long

发号器发的,唯一性

QingNiaoNo

string

青鸟的通知

QingNiaoTeamNo

string

 

QingNiaoUseNo

string

 

CreateTime

datetime

 

UpdateTime

datetime

 

LastUpdateUser

string

最后一次更新用户

IsDelete

bit

 

Remark

string

规则描述

 

 

8. 告警扩展表:--AlarmJstExt

告警按照状态,分为未被领取、已经被领取

确认后:

是直接忽略、忽略一段时间、手动关闭

 

字段名

类型

是否为空

是否索引

备注

Id---[主键]

long

-主键索引

自增

AlarmJstNo

string

预警编号

IsDirector

Bit

是否被指派或认领

DealTag

int

有了负责人之后的处理状态枚举:

 

0. 直接忽略此告警并关闭

1. 暂时忽略一段时间

2. 告警已被解决并关闭

3. 因为告警压缩被程序自动关闭

 

IsCompressed

Bit

被告警压缩

同一个rule之前有产生告警、未被领取、或被领取了但是在被忽略中。

此告警等级也没有超过原告警,直接自动关闭。

但是要修改原本告警的内容。

IsClosed

Bit

是否已经被关闭

或结束

默认false

UpstreamAlarmJstNo

string

告警压缩关联的那个之前上游的产生的预警编号

CauseNextCompressCount

int

因为本次预警,压缩之后产生的累加的其他告警次数

NextMsg

String

 

 

累加的其他告警信息【某些数值累加】

CreateTime

datetime

 

UpdateTime

datetime

 

LastUpdateUser

string

最后一次更新用户

IsDelete

bit

 

Remark

string

规则描述

 

9. 告警扩展--操作日志表:--AlarmJstOperLog

 

字段名

类型

是否为空

是否索引

备注

Id---[主键]

long

-主键索引

自增

AlarmJstNo

string

预警编号

OperLog

string

日志

CreateTime

datetime

 

UpdateTime

datetime

 

LastUpdateUser

string

最后一次更新用户

IsDelete

bit

 

Remark

string

规则描述