MYSQL、SQLServer、PostgreSQL
允许网关将实时、历史、告警、执行日志推动给数据库,或接收数据库端的控制请求
注:MYSQL端也等同"达梦数据库";PostgreSQL端也等同"Greenplum数据库"
1.数据库基础配置
- 启用:是否启用该端推送
网关名:表名中有指定列,内容固定为此值
- 请务必确保每个网关中,该名称是全局唯一的
IP地址:远程数据库的数据库地址
- 端口:远程数据库的端口
- 用户名:访问数据库的用户,需要开启远程访问权限
- 密码:和用户名想匹配的密码
- 数据库名称:具体操作的数据库名称,需要预先创建
2.实时表配置
- 实时表名:接收实时数据的表名,需要预先以指定格式创建
- 实时表周期:将数据更新至实时表的周期,单位秒,推荐值:30
- 变值更新:仅在数据值发生变化时,才进行上传操作;推荐此选项,降低网络传输开销
- 定时发送:多长时间发送一次全部数据,无论值是否发生变更
- 需要上传的数据点,请用户在完成上述配置后,再自行配置
实时表数据示例(mysql中):
- gateway_v:网关名,由用户自行配置
- id_v:采集标签的ID
- vtype_v:值的类型,num或str
- rvalue_v:具体读到的值
- rstatus_v:读取状态:ok、no、null
- rinfo_v:对读取状态的补充信息
- rTime_v:读取该记录的unix时间戳
3.历史表配置
- 历史表名:接收历史数据的表名,需要预先以指定格式创建
- 历史表周期:将数据更新至历史表的周期,单位秒,推荐值:60
- 用户表占用磁盘空间会随着时间累积增长,请用户设立的设置周期,并对不需要旧数据进行清理
- 变值更新:仅在数据值发生变化时,才进行上传操作;
- 强烈推荐此选项,降低网络传输开销,以及降低数据库存储空间的占用
定时发送:多长时间发送一次全部数据,无论值是否发生变更
- 历史表中不推荐开启此选项
需要上传的数据点,请用户在完成上述配置后,再自行配置
历史表数据示例(mysql中):
- gateway_v:网关名,由用户自行配置
- id_v:采集标签的ID
- vtype_v:值的类型,num或str
- rvalue_v:具体读到的值
- rstatus_v:读取状态:ok、no、null
- rinfo_v:对读取状态的补充信息
- rTime_v:读取该记录的unix时间戳
4.告警表配置
- 告警表名:接收告警数据的表名,需要预先以指定格式创建
- 用户需要预先在告警端配置告警点的检查,仅在有告警时,会将告警信息,以指定格式推送至告警表
- 告警表周期:检测是否有告警数据的周期,单位秒,推荐值:30
告警表数据示例(mysql中):
- gateway_v:网关名,由用户自行配置
- id_v:采集标签的ID
- type_v:指明该记录是告警还是恢复,值范围:alarm或recovery
- state_v:触发/恢复的是哪类告警,可选值:max_limit,min_limit,read_limit
- level_v:触发/恢复的告警的等级
- limit_v:该等级的阈值
- data_v:触发/恢复时,采集标签的值
- time_v:触发/恢复时对应的unix时间戳
- time_str_v:触发/恢复时对应的时间字符串
- user_data_v:用户自定义的字段内容
- rinfo_v:仅在告警类型是read_limit时有意义,补充说明读取失败的原因
5.控制表配置
5.1.控制表的配置
- 控制表名:实现数据库端对网关功能的表名,需要预先以指定格式创建
- 控制表周期:网关间隔多久,查询一次控制表是否有"新的控制需求"
- 单个命令执行间隔:如果设置内容包含多个时,设置下一个子对象前的休眠
- 定时保持:
- 不开启此选项时,满足控制表逻辑时,无论成功与否,仅执行一次
- 开启此选项后,将周期执行"满足控制表逻辑的点"
执行记录:经过控制接口成功执行的操作,是否记录在本地
- 在控制频繁的场景下,不推荐开启此选项
此端控制点无需配置,只需要下发的控制ID在网关内存在即可
5.2.控制表使用的方法:
- 插入一条数据,设置"id_v","setv_v","runtime_v"列
- 首次插入示例SQL:insert into control_table (gateway_v,id_v,setv_v,runtime_v) values ('gw1','group9_A0','333','1688622627');
- 后续更新语句:update control_table set setv_v = '32',runtime_v='1688635980' where id_v ='group9_A0';
5.2.控制表的执行逻辑:
- "gateway_v"列是当前网关,且当前时间已超过"runtime_v",且"runtime_v"不为0时,将执行该点
- 当"runtime_v"变更,或"setv_v"与"oldv_v"列值不相等时,执行该点
控制表数据示例(mysql中):
- gateway_v:网关名,由用户自行配置
- id_v:采集标签的ID
- set_v:下发的控制值
- old_v:上次设定的控制值,此列由网关更新维护
- runtime_v:该标签的执行时间,仅在当前时间大于该时间,此标签才会执行
- exe_time_v:真实执行的时间
- exe_status_v:执行的状态:ok、no
- exe_err_v:执行失败的原因
6.日志表配置
- 启用与否:是否启用将其他端的"执行日志"推送至数据库中
- 日志表名:接收执行日志数据的表名,需要预先以指定格式创建
- 日志表周期固定为30秒,当前版本暂不支持更改
日志表数据示例(mysql中):
gateway_v:网关名,由用户自行配置
exe_time_v:该记录发生的unix时间
log_msg_v:具体的日志信息,json格式,有2类格式
格式1:转发端控制接口触发产生
- src:由网关中哪一个程序触发,可选值httpclient,mysql,postgresql,sqlserver,redis
- id:采集标签的ID
- setv:具体设定的值
- exe_status:执行状态
- reason:失败时的补充原因
- time:该记录发生的unix时间
- time_str:该记录发生的时间字符串
格式2:任务端触发产生(请参考数据接口→HTTP日志查询)
- time:该记录发生的时间
- plan:用户配置的任务名
- act:用户配置的动作名
- cond_type:条件类型,有以下可选值
- single:单一条件
- null:无条件
- check_id:条件检测的ID
- cond_status_type:是否启用读取状态的检测
- null:未启用
- success:启用了读取成功次数检测
- fail:启用了读取失败次数检测
- cond_status_judge:读取状态的比较类型
- equal:等于
- greater_than:大于
- greater_than_or_equal:大于等于
- less_than:小于
- less_than_or_equal:小于等于
- cond_val_type:是否启用读值的检测
- null:未启用
- readv:启用了读值大小的检测
- sub_str:启用了包含子串的检测
- str:启用了字串相等的检测
- cond_val_type:读值的比较类型
- equal:等于
- greater_than:大于
- greater_than_or_equal:大于等于
- less_than:小于
- less_than_or_equal:小于等于
- contain_substring:包含子串,仅在cond_val_type值为sub_str时出现
- no_contain_substring:不包含子串,仅在cond_val_type值为sub_str时出现
- equal_str:等于字串,仅在cond_val_type值为str时出现
- no_equal_str:不等于字串,仅在cond_val_type值为str时出现
- cond_val_setv:值条件时的设定值
- cur_val_v:检测时,条件点的值
- cond_time_en:条件是否启用持续时间
- enabled:启用
- disabled:未启用
- cond_time_judge:持续时间的判断条件
- equal:等于
- greater_than:大于
- greater_than_or_equal:大于等于
- less_than:小于
- less_than_or_equal:小于等于
- cond_time:设置的持续时间
- cur_time:实际的时间
- exe_type:执行点类型
- point:单点
- null:无执行点
- exe_id:执行点的名称
- exe_val:执行点的设置值
- exe_status:执行点的主题
- exe_msg:执行失败时的补充原因
7.MYSQL的创表语句
实时表:(实时表需要设置复合主键)
CREATE TABLE IF NOT EXISTS `real_table`(
`gateway_v` VARCHAR(31),
`id_v` VARCHAR(129),
`vtype_v` VARCHAR(5),
`rvalue_v` VARCHAR(513),
`rstatus_v` VARCHAR(5),
`rinfo_v` VARCHAR(129) ,
`rTime_v` BIGINT,
PRIMARY KEY (gateway_v, id_v)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
历史表:
CREATE TABLE IF NOT EXISTS `history_table`(
`gateway_v` VARCHAR(31),
`id_v` VARCHAR(129),
`vtype_v` VARCHAR(48),
`rvalue_v` VARCHAR(513),
`rstatus_v` VARCHAR(5),
`rinfo_v` VARCHAR(129) ,
`rtime_V` BIGINT
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
告警表:
CREATE TABLE IF NOT EXISTS `alarm_table`(
`gateway_v` VARCHAR(31) NOT NULL,
`id_v` VARCHAR(129) NOT NULL,
`type_v` VARCHAR(12) NOT NULL,
`state_v` VARCHAR(12) NOT NULL,
`level_v` VARCHAR(12) NOT NULL,
`limit_v` VARCHAR(64) NOT NULL,
`data_v` VARCHAR(64) NOT NULL,
`time_v`int NOT NULL,
`time_str_v` VARCHAR(32) NOT NULL,
`user_data_v` VARCHAR(257)NOT NULL,
`rinfo_v` VARCHAR(129)NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
控制表:
CREATE TABLE IF NOT EXISTS `control_table`(
`gateway_v` VARCHAR(31),
`id_v` VARCHAR(129) ,
`setv_v` VARCHAR(513) ,
`oldv_v` VARCHAR(513) ,
`runtime_v` int ,
`exe_time_v` int ,
`exe_status_v` VARCHAR(5) ,
`exe_err_v` VARCHAR(257)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
日志表:
CREATE TABLE IF NOT EXISTS `log_table`(
`gateway_v` VARCHAR(31) ,
`exe_time_v` int,
`log_msg_v` VARCHAR(1024)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
8.SQLServer的创表语句
实时表:
gateway_v nchar(31) 主键
id_v nchar(129) 主键
vtype_v nchar(5)
rvalue_v nchar(513)
rstatus_v nchar(5)
rinfo_v nchar(129)
rtime_v numeric(18, 0)
历史表:
gateway_v nchar(31)
id_v nchar(129)
vtype_v nchar(5)
rvalue_v nchar(513)
rstatus_v nchar(5)
rinfo_v nchar(129)
rtime_v numeric(18, 0)
告警表:
gateway_v nchar(31)
id_v nchar(129)
type_v nchar(12)
state_v nchar(12)
level_v nchar(12)
limit_v nchar(64)
data_v nchar(64)
time_v nchar(101)
time_str_v nchar(32)
user_data_v nchar(257)
rinfo_v nchar(129)
控制表:
gateway_v varchar(31)
id_v varchar(129)
setv_v varchar(513)
oldv_v varchar(513)
runtime_v int
exe_time_v int
exe_status_v varchar(5)
exe_err_v varchar(257)
日志表:
gateway_v nchar(31)
exe_time int
log_message nchar(1024)
9.PostgreSQL创表语句
- 相同的配置,也支持连接Greenplum数据库
实时表:
create table real_table(
gateway_v varchar(31),
id_v varchar(129),
vtype_v varchar(12),
rvalue_v varchar(513),
rstatus_v varchar(5),
rinfo_v varchar(129),
rtime_v int,PRIMARY KEY (gateway_v,id_v)
);
历史表:
create table history_table(
gateway_v varchar(31),
id_v varchar(129),
vtype_v varchar(12),
rvalue_v varchar(513),
rstatus_v varchar(5),
rinfo_v varchar(129),
rtime_v int
);
控制表:
create table control_table(
gateway_v varchar(31),
id_v varchar(129),
setv_v varchar(513),
oldv_v varchar(513),
runtime_v int,
exe_time_v int,
exe_status_v varchar(5),
exe_err_v varchar(257)
);
告警表:
create table alarm_table(
gateway_v varchar(31),
id_v varchar(129),
type_v varchar(12),
state_v varchar(12),
level_v varchar(12),
limit_v varchar(64),
data_v varchar(64),
time_v int,
time_str_v varchar(32),
user_data_v varchar(257),
rinfo_v varchar(129)
);
日志表:
create table log_table(
gateway_v varchar(31),
exe_time_v int,
log_msg_v varchar(1024)
);