This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
nezha-nz-transfer/src/main/java/com/nis/handler/SqlHandler.java

1118 lines
103 KiB
Java
Raw Normal View History

2021-05-08 19:33:06 +08:00
package com.nis.handler;
2021-05-12 15:56:47 +08:00
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
2021-05-08 19:33:06 +08:00
import java.util.List;
2021-05-12 15:56:47 +08:00
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
2021-05-08 19:33:06 +08:00
2021-05-12 15:56:47 +08:00
import javax.sql.DataSource;
import org.apache.commons.io.IOUtils;
2021-05-08 19:33:06 +08:00
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
2021-05-12 15:56:47 +08:00
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.datasource.init.ScriptException;
import org.springframework.jdbc.datasource.init.ScriptUtils;
2021-05-08 19:33:06 +08:00
import org.springframework.stereotype.Service;
2021-05-12 15:56:47 +08:00
import org.springframework.util.ResourceUtils;
2021-05-08 19:33:06 +08:00
import com.nis.dao.SqlDao;
2021-05-12 15:56:47 +08:00
import com.nis.entity.SysConfigEntity;
import com.nis.entity.SysUserEntity;
2021-05-08 19:33:06 +08:00
import com.nis.service.AlertMessageService;
import com.nis.service.AssetAssetService;
import com.nis.service.AssetBrandService;
import com.nis.service.AssetModelService;
import com.nis.service.AssetTypeConfService;
2021-05-08 19:33:06 +08:00
import com.nis.service.ChartService;
import com.nis.service.DcService;
import com.nis.service.EndpointService;
import com.nis.service.ProjectTopoService;
2021-05-12 15:56:47 +08:00
import com.nis.service.SysConfigService;
import com.nis.service.SysUserService;
2021-05-08 19:33:06 +08:00
import com.nis.util.Constant;
2021-05-12 15:56:47 +08:00
import com.nis.util.ToolUtil;
2021-05-08 19:33:06 +08:00
2021-05-12 15:56:47 +08:00
import cn.hutool.core.io.IoUtil;
2021-05-08 19:33:06 +08:00
import cn.hutool.core.util.StrUtil;
import cn.hutool.log.Log;
/**
* 此类主要为执行各类sql语句
* @author admin
*
*/
@Service
public class SqlHandler {
private Log log = Log.get();
@Autowired
private SqlDao sqlDao;
@Autowired
private AssetBrandService assetBrandService;
@Autowired
private AssetModelService assetModelService;
@Autowired
private AssetAssetService assetAssetService;
@Autowired
private DcService dcService;
@Autowired
private AlertMessageService alertMessageService;
@Autowired
private EndpointService endpointService;
@Autowired
private ChartService chartService;
2021-05-12 15:56:47 +08:00
@Autowired
private DataSource dataSource;
@Autowired
private SysUserService sysUserService;
@Autowired
private SysConfigService sysConfigService;
@Autowired
private ProjectTopoService projectTopoService;
@Autowired
private AssetTypeConfService assetTypeConfService;
2021-05-08 19:33:06 +08:00
public void removeData() {
String assetPing = "delete from asset_ping";
sqlDao.execute(assetPing);
String updateChartData="update visual_chart set height = ceil(height/100) where height > 12";
sqlDao.execute(updateChartData);
2021-05-08 19:33:06 +08:00
}
public void removeTable() {
String dropSql = "drop table account;"
+ "drop table alert_message;"
+ "drop table asset;"
+ "drop table asset_tag;"
+ "drop table chart;"
+ "drop table chart_element;"
+ "drop table conf_event;"
+ "drop table endpoint;"
+ "drop table endpoint_state;"
+ "drop table idc_traffic;"
+ "drop table model;"
+ "drop table module;"
+ "drop table notification_script;"
+ "drop table panel;"
+ "drop table project;"
+ "drop table metadata_metric;"
+ "drop table metadata_label;"
+ "drop table qrtz_blob_triggers;"
+ "drop table qrtz_calendars;"
+ "drop table qrtz_cron_triggers;"
+ "drop table qrtz_fired_triggers;"
+ "drop table qrtz_locks;"
+ "drop table qrtz_paused_trigger_grps;"
+ "drop table qrtz_scheduler_state;"
+ "drop table qrtz_simple_triggers;"
+ "drop table qrtz_simprop_triggers;"
+ "drop table qrtz_triggers;"
+ "drop table sys_area;"
+ "drop table idc;"
+ "drop table terminal_log;"
+ "drop table user_group;"
+ "drop table user_group_rel;"
+ "drop table user_notification;"
+ "drop table qrtz_job_details;";
sqlDao.execute(dropSql);
}
public void tableCopy() {
StringBuilder sb =new StringBuilder();
List<String> tableNames = sqlDao.allTables();
for(String tableName : tableNames) {
sb.append("CREATE TABLE "+tableName+"_copy SELECT * FROM "+tableName+";");
}
sqlDao.execute(sb.toString());
}
public void removeCopy() {
StringBuilder sb =new StringBuilder();
List<String> sqls = sqlDao.allRemoveCopyTables();
for(String sql : sqls) {
sb.append(sql);
}
sqlDao.execute(sb.toString());
}
public void dropTriggers() {
String databaseName = Constant.DATABASE_NAME;
log.info("databaseName is {}",databaseName);
if(StrUtil.isEmpty(databaseName)) {
throw new RuntimeException("database name error");
}
// 批量删除触发器
StringBuilder sb =new StringBuilder();
List<String> allTriggers = sqlDao.allTriggers(databaseName);
for(String trigger : allTriggers) {
sb.append("drop trigger "+trigger+";");
}
if(StrUtil.isNotBlank(sb.toString())) {
sqlDao.execute(sb.toString());
}
}
public void alterTable() {
String sysLog = "ALTER TABLE `sys_log` \r\n"
+ "ADD COLUMN `sys_api_key` int(10) NULL COMMENT '关联 sys_api_key.id' AFTER `create_date`;";
sqlDao.execute(sysLog);
String sysMenu = "ALTER TABLE `sys_menu` \r\n"
+ "ADD COLUMN `description` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,\r\n"
2021-05-12 15:56:47 +08:00
+ "ADD COLUMN `icon` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'nz-icon nz-alert-add',"
+ "ADD COLUMN `required` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '必要权限,如编辑按钮需要 勾选查看权限 填写内容为 sys_menu.id多个逗号分隔 1,2';";
2021-05-08 19:33:06 +08:00
sqlDao.execute(sysMenu);
String alertRule = "ALTER TABLE `alert_rule` \r\n"
+ "CHANGE COLUMN `alert_name` `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '告警名称',\r\n"
+ "ADD COLUMN `severity_id` int(10) NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF',"
+ "ADD COLUMN `method` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL;";
sqlDao.execute(alertRule);
String assetPing = "ALTER TABLE `asset_ping` \r\n"
+ "ADD COLUMN `asset_id` int(10) NULL;";
sqlDao.execute(assetPing);
String cabinet = "ALTER TABLE `cabinet` \r\n"
+ "CHANGE COLUMN `idc_id` `dc_id` int(10) NOT NULL COMMENT '数据中心id';";
sqlDao.execute(cabinet);
String link = "ALTER TABLE `link` \r\n"
+ "DROP COLUMN `prev`,\r\n"
+ "DROP COLUMN `next`,\r\n"
+ "ADD COLUMN `weight` int(10) NULL;";
sqlDao.execute(link);
String projectTopo = "ALTER TABLE `project_topo` \r\n"
+ "MODIFY COLUMN `topo` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '拓扑图配置信息';";
sqlDao.execute(projectTopo);
String projectTopoIcon = "ALTER TABLE `project_topo_icon` \r\n"
+ "ADD COLUMN `unit` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'icon组',\r\n"
+ "ADD COLUMN `width` int(10) NULL COMMENT '图片宽度 默认:-1 未知' ,\r\n"
+ "ADD COLUMN `height` int(10) NULL COMMENT '图片高度 默认:-1 未知' ;";
sqlDao.execute(projectTopoIcon);
String promServer = "ALTER TABLE `prom_server` \r\n"
+ "CHANGE COLUMN `idc_id` `dc_id` int(10) NOT NULL COMMENT '所在idc',\r\n"
+ "ADD COLUMN `status_info` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,\r\n"
+ "ADD COLUMN `token` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;";
sqlDao.execute(promServer);
String sysUser = "ALTER TABLE `sys_user` \r\n"
+ "CHANGE COLUMN `user_id` `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ "CHANGE COLUMN `password` `pin` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码',\r\n"
+ "CHANGE COLUMN `create_time` `create_at` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',\r\n"
+ "ADD COLUMN `name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户姓名\\r\\n\\r\\n(用于系统内展示用户名称)',\r\n"
+ "ADD COLUMN `last_login_time` datetime NULL COMMENT '最后登陆时间',\r\n"
+ "ADD COLUMN `last_login_ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '最后登陆ip',\r\n"
+ "ADD COLUMN `mobile` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '手机号',\r\n"
+ "ADD COLUMN `create_by` int(10) NULL COMMENT '添加人',\r\n"
+ "DROP PRIMARY KEY,\r\n"
+ "ADD PRIMARY KEY (`id`) USING BTREE;";
sqlDao.execute(sysUser);
}
public void batchAddTable() {
String alertNotifyLog = "CREATE TABLE `alert_notify_log` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `message_id` int(10) NOT NULL COMMENT '关联 alert_message.id',\r\n"
+ " `user_id` int(10) NOT NULL COMMENT '关联 sys_user.id',\r\n"
+ " `message_state` char(1) NOT NULL COMMENT '消息状态1: active2: expired',\r\n"
+ " `state` char(1) NOT NULL COMMENT '通知状态0:失败1:成功',\r\n"
+ " `error_msg` varchar(1024) NOT NULL DEFAULT '' COMMENT '发送错误信息',\r\n"
+ " `time` datetime NOT NULL COMMENT '发送时间',\r\n"
2021-05-12 15:56:47 +08:00
+ " `method_id` int(10) NOT NULL COMMENT '通知方式id 关联ALERT_NOTIFICATION_METHOD.id',\r\n"
2021-05-08 19:33:06 +08:00
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String alertNotifyMethod = "CREATE TABLE `alert_notify_method` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '通知方式名称',\r\n"
+ " `file_path` varchar(255) NOT NULL COMMENT '除内置外必填脚本路径nz-web所在服务器路径',\r\n"
+ " `account` varchar(255) NOT NULL COMMENT '可选值为user表属性idnameusernameemailmobile',\r\n"
+ " `state` int(1) DEFAULT NULL COMMENT '状态0停用1可用',\r\n"
+ " `build_in` int(1) NOT NULL COMMENT '可选值0非内置1内置默认0系统内置一条 email 通知',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String alertSeverityConf = "CREATE TABLE `alert_severity_conf` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) NOT NULL,\r\n"
+ " `color` varchar(64) NOT NULL,\r\n"
+ " `weight` int(3) NOT NULL COMMENT '1-100 顺序取值不重复,值越小告警级别越高',\r\n"
+ " `remark` varchar(255) NOT NULL,\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String alertSilenceConf = "CREATE TABLE `alert_silence_conf` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `name` varchar(255) DEFAULT NULL,\r\n"
+ " `matchers` varchar(4096) NOT NULL,\r\n"
+ " `reason` varchar(1024) NOT NULL COMMENT '记录告警静音原因\\r\\n\\r\\n默认“”',\r\n"
+ " `start_at` datetime NOT NULL COMMENT '开始时间',\r\n"
+ " `end_at` datetime NOT NULL COMMENT '结束时间',\r\n"
+ " `utime` datetime NOT NULL,\r\n"
+ " `state` int(1) NOT NULL COMMENT '可选值:\\r\\n\\r\\n1:active\\r\\n\\r\\n2:pending\\r\\n\\r\\n3:expired',\r\n"
+ " `seq` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '全局唯一,用于导入撤销\\r\\n\\r\\n默认“”',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetAsset = "CREATE TABLE `asset_asset` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(128) NOT NULL COMMENT '不重复,唯一索引',\r\n"
+ " `number` varchar(128) NOT NULL DEFAULT '' COMMENT '资产编号',\r\n"
+ " `sn` varchar(128) NOT NULL DEFAULT '' COMMENT '资产序列号',\r\n"
+ " `pid` int(10) NOT NULL DEFAULT -1 COMMENT '默认:-1\\r\\n\\r\\n只有type vm = 1可以且必须填写此字段且 pid.type vmh = 1',\r\n"
+ " `type_id` int(10) NOT NULL,\r\n"
+ " `state_id` int(10) NOT NULL,\r\n"
+ " `brand_id` int(10) NOT NULL,\r\n"
+ " `model_id` int(10) NOT NULL,\r\n"
+ " `dc_id` int(10) NOT NULL,\r\n"
+ " `cabinet_id` int(10) DEFAULT NULL,\r\n"
+ " `cabinet_start` int(10) DEFAULT NULL,\r\n"
+ " `cabinet_end` int(10) DEFAULT NULL,\r\n"
+ " `manage_ip` varchar(64) NOT NULL COMMENT '管理ip',\r\n"
+ " `purchase_date` date DEFAULT NULL COMMENT '购买日期',\r\n"
+ " `create_at` datetime DEFAULT NULL COMMENT '添加时间',\r\n"
+ " `update_at` datetime DEFAULT NULL COMMENT '更新时间',\r\n"
+ " `create_by` int(10) DEFAULT NULL COMMENT '添加人与user表关联',\r\n"
+ " `update_by` int(10) DEFAULT NULL COMMENT '最后更新人',\r\n"
+ " `seq` varchar(64) DEFAULT NULL,\r\n"
+ " `auth_protocol_port` int(10) DEFAULT NULL COMMENT '认证服务端口',\r\n"
+ " `auth_type` char(1) DEFAULT NULL COMMENT '认证方式1用户名密码\\r\\n\\r\\n2密钥',\r\n"
+ " `auth_username` varchar(64) DEFAULT NULL COMMENT '用户名',\r\n"
+ " `auth_pin` varchar(256) DEFAULT NULL COMMENT '密码auth_type =1 : 记录登录密码\\r\\n\\r\\nauth_type=2 : 记录密钥密码',\r\n"
+ " `auth_pri_key` text DEFAULT NULL COMMENT '秘钥',\r\n"
+ " `auth_user_tip` varchar(64) DEFAULT NULL COMMENT '用户名提示 telnet协议有效',\r\n"
+ " `auth_pin_tip` varchar(64) DEFAULT NULL COMMENT '密码提示 telnet协议有效',\r\n"
+ " `snmp_credential_id` int(10) DEFAULT NULL COMMENT 'snmp凭证id type 开启snmp有效',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetBrand = "CREATE TABLE `asset_brand` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) DEFAULT NULL COMMENT '名称',\r\n"
+ " `remark` varchar(256) DEFAULT '' COMMENT '备注',\r\n"
+ " `seq` varchar(64) DEFAULT NULL,\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetFieldGroup = "CREATE TABLE `asset_field_group` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) DEFAULT NULL COMMENT '名称',\r\n"
+ " `remark` varchar(1024) DEFAULT NULL,\r\n"
+ " `build_in` char(1) DEFAULT NULL COMMENT '1:内置0非内置默认0\\r\\n\\r\\n内置数据不允许删除',\r\n"
+ " `seq` varchar(64) DEFAULT NULL COMMENT '用户导入撤销',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetFieldMeta = "CREATE TABLE `asset_field_meta` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) NOT NULL,\r\n"
+ " `meta_key` varchar(128) NOT NULL COMMENT '唯一不重复 正则:[\\\\w]+',\r\n"
+ " `group_id` varchar(128) NOT NULL COMMENT '关联 asset_field_group.id',\r\n"
+ " `search` char(1) NOT NULL DEFAULT '0' COMMENT '默认0 0不可查询\\r\\n\\r\\n1可查询',\r\n"
+ " `display` char(1) NOT NULL DEFAULT '0' COMMENT '默认0 0列表不展示\\r\\n\\r\\n1列表展示',\r\n"
+ " `type` varchar(32) NOT NULL DEFAULT 'TEXT' COMMENT '属性输入类型',\r\n"
+ " `remark` varchar(64) DEFAULT NULL,\r\n"
+ " `param` text NOT NULL COMMENT '默认:{}',\r\n"
+ " `build_in` int(1) NOT NULL DEFAULT 0 COMMENT '1:内置0非内置默认0',\r\n"
+ " `seq` varchar(64) DEFAULT NULL COMMENT '用户导入撤销',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetFieldValue = "CREATE TABLE `asset_field_value` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `asset_id` int(10) NOT NULL COMMENT ' 关联 asset.id',\r\n"
+ " `meta_id` int(10) NOT NULL COMMENT '关联asset_field_meta.id',\r\n"
+ " `value` text DEFAULT NULL,\r\n"
+ " `seq` varchar(64) DEFAULT NULL COMMENT '用户导入撤销',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetModel = "CREATE TABLE `asset_model` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `brand_id` int(10) NOT NULL,\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '型号名称',\r\n"
+ " `remark` varchar(256) NOT NULL DEFAULT '',\r\n"
+ " `seq` varchar(64) DEFAULT NULL,\r\n"
+ " `usize` int(2) NOT NULL DEFAULT 1,\r\n"
+ " `chart_ids` varchar(4096) DEFAULT NULL COMMENT 'chart 模板id',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetStateConf = "CREATE TABLE `asset_state_conf` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '型号名称',\r\n"
+ " `ping` char(1) NOT NULL COMMENT '0关闭\\r\\n\\r\\n1开启',\r\n"
+ " `monitor` char(1) NOT NULL COMMENT '0关闭\\r\\n\\r\\n1开启',\r\n"
+ " `alert` char(1) NOT NULL COMMENT '0关闭\\r\\n\\r\\n1开启',\r\n"
+ " `remark` varchar(1024) NOT NULL DEFAULT '' COMMENT '默认“”',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置1:内置0非内置默认0\\r\\n\\r\\n内置数据不允许删除',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetTypeConf = "CREATE TABLE `asset_type_conf` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `pid` int(10) NOT NULL DEFAULT 0 COMMENT '父id 默认为0',\r\n"
+ " `vm` char(1) NOT NULL COMMENT '是否为虚拟机 0:不是虚拟机\\r\\n\\r\\n1:是虚拟机',\r\n"
+ " `vmh` char(1) NOT NULL COMMENT '是否为虚拟机宿主 0:不是宿主机,不支持挂载 虚拟机\\r\\n\\r\\n1:是宿主机,支持挂载虚拟机',\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '名称',\r\n"
+ " `remark` varchar(1024) NOT NULL DEFAULT '',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '1:内置0非内置默认0\\r\\n\\r\\n内置数据不允许删除',\r\n"
+ " `auth_protocol` int(1) NOT NULL DEFAULT 0 COMMENT '认证协议 默认0 \\r\\n\\r\\n0\\r\\n\\r\\n1ssh\\r\\n\\r\\n2telnet',\r\n"
+ " `snmp_enable` int(1) NOT NULL DEFAULT 0 COMMENT '是否支持snmp 默认0 \\r\\n\\r\\n0不支持\\r\\n\\r\\n1支持',\r\n"
+ " `snmp_collect` int(1) NOT NULL DEFAULT 0 COMMENT '是否开启snmp采集 默认0 \\r\\n\\r\\n0不开启\\r\\n\\r\\n1开启\\r\\n\\r\\n当snmp_enable=1时有效',\r\n"
+ " `ssh_collect` int(1) NOT NULL COMMENT '是否开启ssh采集 默认0 \\r\\n\\r\\n0不开启\\r\\n\\r\\n1开启\\r\\n\\r\\n当 auth_protocol=1时有效',\r\n"
+ " `ssh_collect_script` varchar(256) NOT NULL DEFAULT '',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String dc = "CREATE TABLE `dc` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键自增',\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '名称',\r\n"
+ " `location` varchar(256) DEFAULT NULL COMMENT '位置',\r\n"
+ " `tel` varchar(128) DEFAULT NULL COMMENT '联系电话',\r\n"
+ " `principal` int(10) DEFAULT NULL COMMENT '机房负责人',\r\n"
+ " `seq` varchar(64) DEFAULT NULL COMMENT '全局唯一,用于导入撤销',\r\n"
+ " `x` int(10) DEFAULT NULL COMMENT '列',\r\n"
+ " `y` int(10) DEFAULT NULL COMMENT '行',\r\n"
+ " `longitude` double(8,5) DEFAULT NULL COMMENT '经度 -180,180',\r\n"
+ " `latitude` double(8,5) DEFAULT NULL COMMENT '纬度 -9090',\r\n"
+ " `state` varchar(8) NOT NULL DEFAULT 'ON' COMMENT '可选值ON,OFF 默认ON',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
String monitorEndpoint = "CREATE TABLE `monitor_endpoint` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(128) NOT NULL COMMENT '名称',\r\n"
+ " `module_id` int(10) NOT NULL,\r\n"
+ " `asset_id` int(10) NOT NULL,\r\n"
+ " `configs` text NOT NULL,\r\n"
+ " `hash` varchar(64) NOT NULL COMMENT '计算 moduleId + assetId + host + port + configs 的hash值用于确保相同配置不重复',\r\n"
+ " `enabled` int(4) NOT NULL COMMENT '是否启用 可选值\\r\\n\\r\\n0停用\\r\\n\\r\\n1启用',\r\n"
+ " `seq` varchar(64) DEFAULT NULL,\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String monitorEndpointState = "CREATE TABLE `monitor_endpoint_state` (\r\n"
+ " `endpoint_id` int(10) NOT NULL,\r\n"
+ " `state` int(4) NOT NULL COMMENT ' ',\r\n"
+ " `time` datetime NOT NULL,\r\n"
+ " PRIMARY KEY (`endpoint_id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String monitorEventLog = "CREATE TABLE `monitor_event_log` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `event` varchar(64) NOT NULL COMMENT '唯一不重复\\r\\n\\r\\n包含值cmdprometheusrulesnmpblackbox',\r\n"
+ " `counter` int(10) NOT NULL COMMENT '描述信息update +1',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String monitorModule = "CREATE TABLE `monitor_module` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) DEFAULT NULL COMMENT '组件名称 唯一索引,表内不重复',\r\n"
+ " `project_id` int(10) NOT NULL,\r\n"
+ " `type` varchar(64) NOT NULL COMMENT '可选值http snmp',\r\n"
+ " `endpoint_name_tmpl` varchar(64) NOT NULL COMMENT 'endpoint name模板 支持 {{}} 变量替换assetmodule\\r\\n\\r\\n例{{asset.name}}-{{module.name}}\\r\\n\\r\\n最终endpoint的name为 192.168.40.1-mysql',\r\n"
+ " `remark` varchar(256) DEFAULT NULL,\r\n"
+ " `configs` text NOT NULL COMMENT '配置参数 ',\r\n"
+ " `snmp_yml` text DEFAULT NULL COMMENT 'snmp_exporter需要的配置部分',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0',\r\n"
+ " `seq` varchar(64) DEFAULT NULL,\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String monitorProject = "CREATE TABLE `monitor_project` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) DEFAULT NULL COMMENT '应用名称',\r\n"
+ " `remark` varchar(256) DEFAULT NULL COMMENT '描述信息',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置 1:内置0非内置默认0',\r\n"
+ " `seq` varchar(64) DEFAULT NULL,\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String snmpCredential = "CREATE TABLE `snmp_credential` (\r\n"
+ " `id` int(11) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '名称',\r\n"
+ " `remark` varchar(1024) DEFAULT NULL COMMENT '描述信息',\r\n"
+ " `type` int(1) NOT NULL COMMENT '1,2,3 -- > V1,V2,V3 创建人id',\r\n"
+ " `config` varchar(1024) DEFAULT NULL COMMENT '具体配置',\r\n"
+ " `port` int(1) NOT NULL DEFAULT 161 COMMENT '端口号 默认161',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String sysApiKey = "CREATE TABLE `sys_api_key` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '名称 唯一不重复',\r\n"
+ " `token` varchar(512) NOT NULL COMMENT '密钥 唯一不重复',\r\n"
+ " `role_id` int(10) NOT NULL COMMENT '角色id',\r\n"
+ " `create_by` int(10) NOT NULL COMMENT '创建用户',\r\n"
+ " `create_at` datetime NOT NULL COMMENT '创建时间',\r\n"
+ " `expire_at` datetime DEFAULT NULL COMMENT '失效时间 为空不失效',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String sysTimezone = "CREATE TABLE `sys_timezone` (\r\n"
+ " `id` int(4) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(255) NOT NULL COMMENT 'timezone id',\r\n"
+ " `offset` int(10) NOT NULL COMMENT '单位milliseconds',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String terminalCmd = "CREATE TABLE `terminal_cmd` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `uuid` varchar(256) NOT NULL COMMENT '会话id',\r\n"
+ " `cmd` varchar(4096) DEFAULT NULL COMMENT '用户输入命令',\r\n"
+ " `time` int(10) DEFAULT NULL COMMENT '单位ms\\r\\n\\r\\n记录的是 session开始后的时间偏移量',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String terminalRecord = "CREATE TABLE `terminal_record` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `uuid` varchar(256) NOT NULL COMMENT '会话ID',\r\n"
+ " `start_time` int(10) NOT NULL COMMENT '单位ms\\r\\n\\r\\nrecord 开始时间,记录的是会话开始后的时间偏移量',\r\n"
+ " `end_time` int(10) NOT NULL COMMENT '单位ms\\r\\n\\r\\nrecord 结束时间,记录的是会话开始后的时间偏移量',\r\n"
+ " `content` mediumblob NOT NULL COMMENT '记录的是 session开始后的时间偏移量\\r\\n\\r\\n最大储存 65K超过部分再新增一条记录',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String terminalSession = "CREATE TABLE `terminal_session` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `uuid` varchar(256) DEFAULT NULL COMMENT '会话id',\r\n"
+ " `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id',\r\n"
+ " `host` varchar(128) DEFAULT NULL COMMENT '登录主机',\r\n"
+ " `port` int(10) DEFAULT NULL COMMENT '端口',\r\n"
+ " `protocol` varchar(32) DEFAULT NULL COMMENT '协议可选值SSHTELNET。统一大写',\r\n"
+ " `auth_type` int(10) DEFAULT NULL COMMENT '认证类型1密码2私钥证书 认证类型1密码2私钥证书\\r\\n\\r\\nssh可选值1、2\\r\\n\\r\\ntelnet可选值1',\r\n"
+ " `login_user` varchar(128) DEFAULT NULL COMMENT '登录主机的用户名',\r\n"
+ " `user_id` int(10) NOT NULL COMMENT 'nezha系统内用户id',\r\n"
+ " `remote_addr` varchar(128) NOT NULL COMMENT '客户端ip地址',\r\n"
+ " `start_time` datetime NOT NULL COMMENT '开始时间',\r\n"
+ " `end_time` datetime DEFAULT NULL COMMENT '结束时间',\r\n"
+ " `status` int(1) NOT NULL COMMENT '0连接中\\r\\n\\r\\n1发送失败没有通过ssh或telnet发送成功\\r\\n\\r\\n2已结束\\r\\n\\r\\n3强制退出\\r\\n\\r\\n4未知错误',\r\n"
+ " `kill_user_id` int(10) DEFAULT NULL COMMENT '强制关闭用户id',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String visualChart = "CREATE TABLE `visual_chart` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `name` varchar(255) NOT NULL COMMENT '图表标题',\r\n"
+ " `panel_id` int(10) NOT NULL COMMENT '图表id关联panel表\\r\\n\\r\\n当 panel_id =0 代表为模板',\r\n"
+ " `group_id` int(10) NOT NULL COMMENT '关联 visual_chart.id关联 chart 的 type 只能为 group',\r\n"
+ " `span` int(10) NOT NULL COMMENT 'type = groupspan = 12, 用户修改无效',\r\n"
+ " `height` int(10) NOT NULL COMMENT 'type = groupheight = -1用户修改无效',\r\n"
+ " `update_by` int(10) NOT NULL COMMENT '更新人',\r\n"
+ " `update_at` datetime NOT NULL COMMENT '更新时间',\r\n"
+ " `type` varchar(32) NOT NULL COMMENT '图表类型 line\\r\\nbar\\r\\ntable\\r\\nstackArea\\r\\nsingleStat\\r\\nurl\\r\\nassetInfo\\r\\nalertList\\r\\ngroup',\r\n"
+ " `unit` int(10) NOT NULL DEFAULT 2 COMMENT '界面显示采用二级菜单',\r\n"
+ " `weight` int(10) NOT NULL DEFAULT 0 COMMENT '默认为 0用于chart排序',\r\n"
+ " `param` text DEFAULT NULL COMMENT '参数 记录type的具体参数信息数据格式为json对象\\r\\n\\r\\n当type = url时\\r\\n\\r\\n{\\r\\n\\r\\n “url”:\"https://www.baidu.com\"\\r\\n\\r\\n}',\r\n"
+ " `pid` int(10) DEFAULT NULL COMMENT '模板id 图表通过模板创建时不能为空,便于后续模板修改同步修改',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '1:内置0非内置默认0',\r\n"
+ " `remark` varchar(1024) NOT NULL DEFAULT '' COMMENT '默认:\"\"',\r\n"
+ " `seq` varchar(64) DEFAULT NULL COMMENT '导入唯一标识',\r\n"
+ " `var_type` int(1) DEFAULT NULL COMMENT '模板或使用模板创建有效pid != null | panel_id == 0 时不能为空\\r\\n\\r\\n1: asset\\r\\n\\r\\n2: endpoint',\r\n"
+ " `var_id` int(10) DEFAULT NULL COMMENT 'pid != null 时不能为空\\r\\n\\r\\n根据var_type 分别对应 asset.id, endpoint.id用于 表达式变量替换',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String visualChartElement = "CREATE TABLE `visual_chart_element` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `chart_id` int(10) NOT NULL COMMENT '图表id关联chart表',\r\n"
+ " `expression` varchar(4096) NOT NULL COMMENT 'promql表达式',\r\n"
+ " `type` varchar(32) NOT NULL COMMENT 'normal简单表达式可页面解析up{asset=\"192.168.40.40\",module=\"kafka\"}\\r\\n\\r\\nexpert用户输入表达式解析困难直接在页面显示',\r\n"
+ " `legend` varchar(512) DEFAULT NULL COMMENT '图例别名表达式',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置',\r\n"
+ " `seq` varchar(64) DEFAULT NULL COMMENT '导入唯一标识 用于导入撤销',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String visualPanel = "CREATE TABLE `visual_panel` (\r\n"
+ " `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '图表名',\r\n"
+ " `create_by` int(10) NOT NULL COMMENT '创建人id',\r\n"
+ " `type` varchar(64) NOT NULL DEFAULT 'dashboard' COMMENT '可选值dashboardassetprojectmoduleendpoint, model\\r\\n\\r\\n默认值dashboard',\r\n"
+ " `link` int(10) DEFAULT NULL COMMENT '关联id',\r\n"
+ " `pid` int(10) NOT NULL DEFAULT 0 COMMENT '父id 默认0',\r\n"
+ " `weight` int(10) NOT NULL DEFAULT 0 COMMENT '排序 默认0',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置',\r\n"
+ " `seq` varchar(64) NOT NULL DEFAULT '' COMMENT '默认:“”\\r\\n\\r\\n用于导入撤销',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String visualExpressionTmpl = "CREATE TABLE `visual_expression_tmpl` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '模板名称',\r\n"
+ " `gname` varchar(64) NOT NULL DEFAULT 'default' COMMENT '组名默认default',\r\n"
+ " `expression` varchar(4096) NOT NULL COMMENT '表达式,不能为空',\r\n"
+ " `remark` varchar(512) NOT NULL COMMENT '描述',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '1:内置0非内置默认0',\r\n"
+ " `seq` varchar(64) NOT NULL DEFAULT '' COMMENT '用于导入撤销,默认:“”',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String alertMessageActive = "CREATE TABLE `alert_message_active` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `severity` varchar(64) DEFAULT NULL COMMENT '告警级别',\r\n"
+ " `summary` text DEFAULT NULL COMMENT '告警摘要',\r\n"
+ " `description` text DEFAULT NULL COMMENT '告警描述',\r\n"
+ " `labels` text DEFAULT NULL COMMENT '告警labels信息',\r\n"
+ " `start_at` datetime DEFAULT NULL COMMENT '开始时间',\r\n"
+ " `end_at` datetime DEFAULT NULL COMMENT '结束时间',\r\n"
+ " `state` int(10) DEFAULT NULL COMMENT '状态1:pending,2:Expired',\r\n"
+ " `rule_id` int(10) NOT NULL COMMENT '告警规则ID',\r\n"
+ " `project_id` int(10) DEFAULT NULL COMMENT '关联project id',\r\n"
+ " `module_id` int(10) DEFAULT NULL COMMENT '关联module id',\r\n"
+ " `endpoint_id` int(10) DEFAULT NULL COMMENT '关联endpoint id',\r\n"
+ " `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id',\r\n"
+ " `dc_id` int(10) DEFAULT NULL COMMENT '关联idc id',\r\n"
+ " `hash_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'redis hash key',\r\n"
+ " `remark` text DEFAULT NULL COMMENT '备注 记录手动关闭记录信息,格式\\r\\n\\r\\ntime username\\r\\n\\r\\nmessage',\r\n"
+ " `severity_id` int(10) DEFAULT NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE,\r\n"
+ " KEY `idx_severity` (`severity`) USING BTREE,\r\n"
+ " KEY `idx_state` (`state`) USING BTREE,\r\n"
+ " KEY `idx_rule_id` (`rule_id`) USING BTREE,\r\n"
+ " KEY `idx_project_id` (`project_id`) USING BTREE,\r\n"
+ " KEY `idx_module_id` (`module_id`) USING BTREE,\r\n"
+ " KEY `idx_endpoint_id` (`endpoint_id`) USING BTREE,\r\n"
+ " KEY `idx_asset_id` (`asset_id`) USING BTREE,\r\n"
+ " KEY `idx_dc_id` (`dc_id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;";
String alertMessageHistory = "CREATE TABLE `alert_message_history` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `severity` varchar(64) DEFAULT NULL COMMENT '告警级别',\r\n"
+ " `summary` text DEFAULT NULL COMMENT '告警摘要',\r\n"
+ " `description` text DEFAULT NULL COMMENT '告警描述',\r\n"
+ " `labels` text DEFAULT NULL COMMENT '告警labels信息',\r\n"
+ " `start_at` datetime DEFAULT NULL COMMENT '开始时间',\r\n"
+ " `end_at` datetime DEFAULT NULL COMMENT '结束时间',\r\n"
+ " `state` int(10) DEFAULT NULL COMMENT '状态1:pending,2:Expired',\r\n"
+ " `rule_id` int(10) NOT NULL COMMENT '告警规则ID',\r\n"
+ " `project_id` int(10) DEFAULT NULL COMMENT '关联project id',\r\n"
+ " `module_id` int(10) DEFAULT NULL COMMENT '关联module id',\r\n"
+ " `endpoint_id` int(10) DEFAULT NULL COMMENT '关联endpoint id',\r\n"
+ " `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id',\r\n"
+ " `dc_id` int(10) DEFAULT NULL COMMENT '关联idc id',\r\n"
+ " `hash_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'redis hash key',\r\n"
+ " `remark` text DEFAULT NULL COMMENT '备注 记录手动关闭记录信息,格式\\r\\n\\r\\ntime username\\r\\n\\r\\nmessage',\r\n"
+ " `severity_id` int(10) DEFAULT NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE,\r\n"
+ " KEY `idx_severity` (`severity`) USING BTREE,\r\n"
+ " KEY `idx_state` (`state`) USING BTREE,\r\n"
+ " KEY `idx_rule_id` (`rule_id`) USING BTREE,\r\n"
+ " KEY `idx_project_id` (`project_id`) USING BTREE,\r\n"
+ " KEY `idx_module_id` (`module_id`) USING BTREE,\r\n"
+ " KEY `idx_endpoint_id` (`endpoint_id`) USING BTREE,\r\n"
+ " KEY `idx_asset_id` (`asset_id`) USING BTREE,\r\n"
+ " KEY `idx_dc_id` (`dc_id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;";
String alertMessageSilence = "CREATE TABLE `alert_message_silence` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `severity` varchar(64) DEFAULT NULL COMMENT '告警级别',\r\n"
+ " `summary` text DEFAULT NULL COMMENT '告警摘要',\r\n"
+ " `description` text DEFAULT NULL COMMENT '告警描述',\r\n"
+ " `labels` text DEFAULT NULL COMMENT '告警labels信息',\r\n"
+ " `start_at` datetime DEFAULT NULL COMMENT '开始时间',\r\n"
+ " `end_at` datetime DEFAULT NULL COMMENT '结束时间',\r\n"
+ " `state` int(10) DEFAULT NULL COMMENT '状态1:pending,2:Expired',\r\n"
+ " `rule_id` int(10) NOT NULL COMMENT '告警规则ID',\r\n"
+ " `project_id` int(10) DEFAULT NULL COMMENT '关联project id',\r\n"
+ " `module_id` int(10) DEFAULT NULL COMMENT '关联module id',\r\n"
+ " `endpoint_id` int(10) DEFAULT NULL COMMENT '关联endpoint id',\r\n"
+ " `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id',\r\n"
+ " `dc_id` int(10) DEFAULT NULL COMMENT '关联idc id',\r\n"
+ " `hash_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'redis hash key',\r\n"
+ " `remark` text DEFAULT NULL COMMENT '备注 记录手动关闭记录信息,格式\\r\\n\\r\\ntime username\\r\\n\\r\\nmessage',\r\n"
+ " `severity_id` int(10) DEFAULT NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE,\r\n"
+ " KEY `idx_severity` (`severity`) USING BTREE,\r\n"
+ " KEY `idx_state` (`state`) USING BTREE,\r\n"
+ " KEY `idx_rule_id` (`rule_id`) USING BTREE,\r\n"
+ " KEY `idx_project_id` (`project_id`) USING BTREE,\r\n"
+ " KEY `idx_module_id` (`module_id`) USING BTREE,\r\n"
+ " KEY `idx_endpoint_id` (`endpoint_id`) USING BTREE,\r\n"
+ " KEY `idx_asset_id` (`asset_id`) USING BTREE,\r\n"
+ " KEY `idx_dc_id` (`dc_id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;";
String alertSilenceMessageRel = "CREATE TABLE `alert_silence_message_rel` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `silence_conf_id` int(10) NOT NULL,\r\n"
+ " `message_id` bigint(20) NOT NULL,\r\n"
+ " `hash_key` varchar(255) NOT NULL,\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
StringBuilder sb = new StringBuilder();
sb.append(alertSilenceConf);
sb.append(alertSeverityConf);
sb.append(alertNotifyMethod);
sb.append(alertNotifyLog);
sb.append(assetAsset);
sb.append(assetBrand);
sb.append(assetFieldGroup);
sb.append(assetFieldMeta);
sb.append(assetFieldValue);
sb.append(assetModel);
sb.append(assetStateConf);
sb.append(assetTypeConf);
sb.append(dc);
sb.append(monitorEndpoint);
sb.append(monitorEndpointState);
sb.append(monitorEventLog);
sb.append(monitorModule);
sb.append(monitorProject);
sb.append(snmpCredential);
sb.append(sysApiKey);
sb.append(sysTimezone);
sb.append(terminalCmd);
sb.append(terminalRecord);
sb.append(terminalSession);
sb.append(visualChart);
sb.append(visualChartElement);
sb.append(visualPanel);
sb.append(visualExpressionTmpl);
sb.append(alertMessageHistory);
sb.append(alertMessageSilence);
sb.append(alertMessageActive);
sb.append(alertSilenceMessageRel);
sqlDao.execute(sb.toString());
}
/**
* alert_severity_conf
* asset_field_group
* asset_brand
* asset_model
* asset_state_conf
* asset_type_conf
* monitor_event_log
* sys_timezone
2021-05-12 15:56:47 +08:00
* @throws IOException
* @throws SQLException
* @throws ScriptException
2021-05-08 19:33:06 +08:00
*/
2021-05-12 15:56:47 +08:00
public void initData() throws ScriptException, SQLException {
Resource classPathResource = new ClassPathResource("db/init.sql");
ScriptUtils.executeSqlScript(dataSource.getConnection(), classPathResource);
// asset_brand表数据单独处理
assetBrandService.handler();
// asset_model表数据处理 前提先处理好brand表数据信息
assetModelService.handler();
// asset_type_conf表数据处理
assetTypeConfService.handler();
2021-05-12 15:56:47 +08:00
/*StringBuilder sb = new StringBuilder();
2021-05-08 19:33:06 +08:00
sb.append("INSERT INTO `asset_field_group`(`id`, `name`, `remark`, `build_in`, `seq`) VALUES (1, 'default', 'Default meta group', '1', '');");
sb.append("INSERT INTO `alert_severity_conf`(`id`, `name`, `color`, `weight`, `remark`) VALUES (1, 'P1', '#f2866e', 1, '高级告警');");
sb.append("INSERT INTO `alert_severity_conf`(`id`, `name`, `color`, `weight`, `remark`) VALUES (2, 'P2', '#f89984', 2, '中级告警');");
sb.append("INSERT INTO `alert_severity_conf`(`id`, `name`, `color`, `weight`, `remark`) VALUES (3, 'P3', '#f7ba78', 3, '低级告警');");
sb.append("INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (1, 'In use', '1', '1', '1', '', '1');");
sb.append("INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (2, 'Not in storage', '0', '0', '0', '', '1');");
sb.append("INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (3, 'Idle', '1', '0', '1', '', '1');");
sb.append("INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (4, 'Repair', '1', '1', '0', '', '1'); ");
sb.append("INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (5, 'Scrapped', '1', '0', '0', '', '1');");
sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (1, 0, '1', '1', 'Network devices', 'Network devices', '1', 2, 1, 1, 1, '');");
sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (2, 0, '0', '0', 'Router', '', '1', 2, 1, 0, 0, '');");
sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (3, 0, '0', '0', 'Firewall', '', '1', 2, 1, 0, 0, '');");
sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (4, 0, '0', '0', 'Switch', '', '1', 2, 1, 0, 0, '');");
sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (5, 0, '0', '1', 'Computer', '', '1', 1, 0, 0, 0, '');");
sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (6, 0, '0', '1', 'Server', '', '1', 1, 0, 0, 0, '');");
sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (7, 0, '1', '0', 'Virtual machine', '', '1', 1, 0, 0, 0, '');");
sb.append("INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (8, 0, '0', '0', 'ADC', '', '1', 1, 1, 0, 0, '');");
sb.append("INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('blackbox', 0);");
sb.append("INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('cmd', 0);");
sb.append("INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('global', 0);");
sb.append("INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('per-datacenter', 0);");
sb.append("INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('snmp', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (1, 'Africa/Abidjan', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (2, 'Africa/Accra', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (3, 'Africa/Algiers', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (4, 'Africa/Bissau', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (5, 'Africa/Cairo', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (6, 'Africa/Casablanca', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (7, 'Africa/Ceuta', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (8, 'Africa/El_Aaiun', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (9, 'Africa/Johannesburg', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (10, 'Africa/Juba', 10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (11, 'Africa/Khartoum', 10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (12, 'Africa/Lagos', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (13, 'Africa/Maputo', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (14, 'Africa/Monrovia', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (15, 'Africa/Nairobi', 10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (16, 'Africa/Ndjamena', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (17, 'Africa/Sao_Tome', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (18, 'Africa/Tripoli', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (19, 'Africa/Tunis', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (20, 'Africa/Windhoek', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (21, 'Antarctica/Casey', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (22, 'Antarctica/Davis', 25200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (23, 'Antarctica/DumontDUrville', 36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (24, 'Antarctica/Macquarie', 39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (25, 'Antarctica/Mawson', 18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (26, 'Antarctica/Palmer', -14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (27, 'Antarctica/Rothera', -10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (28, 'Antarctica/Syowa', 10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (29, 'Antarctica/Troll', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (30, 'Antarctica/Vostok', 21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (31, 'Asia/Almaty', 21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (32, 'Asia/Amman', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (33, 'Asia/Anadyr', 43200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (34, 'Asia/Aqtau', 18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (35, 'Asia/Aqtobe', 18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (36, 'Asia/Ashgabat', 18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (37, 'Asia/Atyrau', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (38, 'Asia/Baghdad', 10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (39, 'Asia/Baku', 14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (40, 'Asia/Bangkok', 25200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (41, 'Asia/Barnaul', 25200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (42, 'Asia/Beirut', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (43, 'Asia/Bishkek', 21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (44, 'Asia/Brunei', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (45, 'Asia/Chita', 32400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (46, 'Asia/Choibalsan', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (47, 'Asia/Colombo', 19800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (48, 'Asia/Damascus', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (49, 'Asia/Dhaka', 21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (50, 'Asia/Dili', 32400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (51, 'Asia/Dubai', 14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (52, 'Asia/Dushanbe', 18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (53, 'Asia/Famagusta', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (54, 'Asia/Gaza', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (55, 'Asia/Hebron', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (56, 'Asia/Ho_Chi_Minh', 25200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (57, 'Asia/Hong_Kong', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (58, 'Asia/Hovd', 25200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (59, 'Asia/Irkutsk', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (60, 'Asia/Jakarta', 25200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (61, 'Asia/Jayapura', 32400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (62, 'Asia/Jerusalem', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (63, 'Asia/Kabul', 16200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (64, 'Asia/Kamchatka', 43200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (65, 'Asia/Karachi', 18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (66, 'Asia/Kathmandu', 20700000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (67, 'Asia/Khandyga', 32400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (68, 'Asia/Kolkata', 19800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (69, 'Asia/Krasnoyarsk', 25200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (70, 'Asia/Kuala_Lumpur', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (71, 'Asia/Kuching', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (72, 'Asia/Macau', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (73, 'Asia/Magadan', 39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (74, 'Asia/Makassar', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (75, 'Asia/Manila', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (76, 'Asia/Nicosia', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (77, 'Asia/Novokuznetsk', 25200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (78, 'Asia/Novosibirsk', 21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (79, 'Asia/Omsk', 21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (80, 'Asia/Oral', 18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (81, 'Asia/Pontianak', 25200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (82, 'Asia/Pyongyang', 30600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (83, 'Asia/Qatar', 10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (84, 'Asia/Qostanay', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (85, 'Asia/Qyzylorda', 21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (86, 'Asia/Riyadh', 10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (87, 'Asia/Sakhalin', 39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (88, 'Asia/Samarkand', 18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (89, 'Asia/Seoul', 32400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (90, 'Asia/Shanghai', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (91, 'Asia/Singapore', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (92, 'Asia/Srednekolymsk', 39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (93, 'Asia/Taipei', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (94, 'Asia/Tashkent', 18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (95, 'Asia/Tbilisi', 14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (96, 'Asia/Tehran', 12600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (97, 'Asia/Thimphu', 21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (98, 'Asia/Tokyo', 32400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (99, 'Asia/Tomsk', 25200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (100, 'Asia/Ulaanbaatar', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (101, 'Asia/Urumqi', 21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (102, 'Asia/Ust-Nera', 36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (103, 'Asia/Vladivostok', 36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (104, 'Asia/Yakutsk', 32400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (105, 'Asia/Yangon', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (106, 'Asia/Yekaterinburg', 18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (107, 'Asia/Yerevan', 14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (108, 'Atlantic/Azores', -3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (109, 'Atlantic/Bermuda', -14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (110, 'Atlantic/Canary', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (111, 'Atlantic/Cape_Verde', -3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (112, 'Atlantic/Faroe', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (113, 'Atlantic/Madeira', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (114, 'Atlantic/Reykjavik', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (115, 'Atlantic/South_Georgia', -7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (116, 'Atlantic/Stanley', -10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (117, 'Australia/Adelaide', 34200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (118, 'Australia/Brisbane', 36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (119, 'Australia/Broken_Hill', 34200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (120, 'Australia/Darwin', 34200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (121, 'Australia/Eucla', 31500000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (122, 'Australia/Hobart', 36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (123, 'Australia/Lindeman', 36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (124, 'Australia/Lord_Howe', 37800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (125, 'Australia/Melbourne', 36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (126, 'Australia/Perth', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (127, 'Australia/Sydney', 36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (128, 'Etc/GMT', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (129, 'Etc/GMT+1', -3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (130, 'Etc/GMT+10', -36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (131, 'Etc/GMT+11', -39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (132, 'Etc/GMT+12', -43200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (133, 'Etc/GMT+2', -7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (134, 'Etc/GMT+3', -10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (135, 'Etc/GMT+4', -14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (136, 'Etc/GMT+5', -18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (137, 'Etc/GMT+6', -21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (138, 'Etc/GMT+7', -25200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (139, 'Etc/GMT+8', -28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (140, 'Etc/GMT+9', -32400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (141, 'Etc/GMT-1', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (142, 'Etc/GMT-10', 36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (143, 'Etc/GMT-11', 39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (144, 'Etc/GMT-12', 43200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (145, 'Etc/GMT-13', 46800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (146, 'Etc/GMT-14', 50400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (147, 'Etc/GMT-2', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (148, 'Etc/GMT-3', 10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (149, 'Etc/GMT-4', 14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (150, 'Etc/GMT-5', 18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (151, 'Etc/GMT-6', 21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (152, 'Etc/GMT-7', 25200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (153, 'Etc/GMT-8', 28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (154, 'Etc/GMT-9', 32400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (155, 'Etc/UTC', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (156, 'Europe/Amsterdam', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (157, 'Europe/Andorra', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (158, 'Europe/Astrakhan', 14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (159, 'Europe/Athens', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (160, 'Europe/Belgrade', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (161, 'Europe/Berlin', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (162, 'Europe/Brussels', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (163, 'Europe/Bucharest', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (164, 'Europe/Budapest', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (165, 'Europe/Chisinau', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (166, 'Europe/Copenhagen', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (167, 'Europe/Dublin', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (168, 'Europe/Gibraltar', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (169, 'Europe/Helsinki', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (170, 'Europe/Istanbul', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (171, 'Europe/Kaliningrad', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (172, 'Europe/Kiev', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (173, 'Europe/Kirov', 10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (174, 'Europe/Lisbon', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (175, 'Europe/London', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (176, 'Europe/Luxembourg', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (177, 'Europe/Madrid', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (178, 'Europe/Malta', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (179, 'Europe/Minsk', 10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (180, 'Europe/Monaco', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (181, 'Europe/Moscow', 10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (182, 'Europe/Oslo', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (183, 'Europe/Paris', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (184, 'Europe/Prague', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (185, 'Europe/Riga', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (186, 'Europe/Rome', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (187, 'Europe/Samara', 14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (188, 'Europe/Saratov', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (189, 'Europe/Simferopol', 10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (190, 'Europe/Sofia', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (191, 'Europe/Stockholm', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (192, 'Europe/Tallinn', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (193, 'Europe/Tirane', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (194, 'Europe/Ulyanovsk', 14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (195, 'Europe/Uzhgorod', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (196, 'Europe/Vienna', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (197, 'Europe/Vilnius', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (198, 'Europe/Volgograd', 10800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (199, 'Europe/Warsaw', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (200, 'Europe/Zaporozhye', 7200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (201, 'Europe/Zurich', 3600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (202, 'Factory', 0);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (203, 'Indian/Chagos', 21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (204, 'Indian/Christmas', 25200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (205, 'Indian/Cocos', 23400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (206, 'Indian/Kerguelen', 18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (207, 'Indian/Mahe', 14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (208, 'Indian/Maldives', 18000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (209, 'Indian/Mauritius', 14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (210, 'Indian/Reunion', 14400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (211, 'Pacific/Apia', 46800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (212, 'Pacific/Auckland', 43200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (213, 'Pacific/Bougainville', 39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (214, 'Pacific/Chatham', 45900000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (215, 'Pacific/Chuuk', 36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (216, 'Pacific/Easter', -21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (217, 'Pacific/Efate', 39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (218, 'Pacific/Enderbury', 46800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (219, 'Pacific/Fakaofo', 46800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (220, 'Pacific/Fiji', 43200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (221, 'Pacific/Funafuti', 43200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (222, 'Pacific/Galapagos', -21600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (223, 'Pacific/Gambier', -32400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (224, 'Pacific/Guadalcanal', 39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (225, 'Pacific/Guam', 36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (226, 'Pacific/Honolulu', -36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (227, 'Pacific/Kiritimati', 50400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (228, 'Pacific/Kosrae', 39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (229, 'Pacific/Kwajalein', 43200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (230, 'Pacific/Majuro', 43200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (231, 'Pacific/Marquesas', -34200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (232, 'Pacific/Nauru', 43200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (233, 'Pacific/Niue', -39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (234, 'Pacific/Norfolk', 39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (235, 'Pacific/Noumea', 39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (236, 'Pacific/Pago_Pago', -39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (237, 'Pacific/Palau', 32400000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (238, 'Pacific/Pitcairn', -28800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (239, 'Pacific/Pohnpei', 39600000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (240, 'Pacific/Port_Moresby', 36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (241, 'Pacific/Rarotonga', -36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (242, 'Pacific/Tahiti', -36000000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (243, 'Pacific/Tarawa', 43200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (244, 'Pacific/Tongatapu', 46800000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (245, 'Pacific/Wake', 43200000);");
sb.append("INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (246, 'Pacific/Wallis', 43200000);");
sb.append("INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('asset_asset_export_header', '{\\r\\n \\\"cn\\\": {\\r\\n \\\"*资产名称\\\": \\\"资产名称,唯一标识(必填) \\\\n示例: DELL服务器\\\",\\r\\n \\\"*SN码\\\": \\\"资产序列号,唯一标识(必填) \\\\n示例: A0420200101\\\",\\r\\n \\\"虚拟机宿主\\\": \\\"虚拟机宿主,当资产为虚拟机时必填 \\\\n示例: DELL物理机\\\",\\r\\n \\\"*管理ip\\\": \\\"主机地址(必填),IP格式 \\\\n示例: 172.0.0.1\\\",\\r\\n \\\"*品牌\\\": \\\"品牌(必填) \\\\n示例: DELL\\\",\\r\\n \\\"*型号\\\": \\\"型号(必填) \\\\n示例: DELL-D3\\\",\\r\\n \\\"*数据中心\\\": \\\"数据中心(必填) \\\\n示例: 北京电信中心机房\\\",\\r\\n \\\"机柜\\\": \\\"机柜 \\\\n示例: cabinet-001\\\",\\r\\n \\\"开始U位\\\": \\\"机柜开始位置 此信息一般和机柜结束位置联合使用 \\\\n示例: 1\\\",\\r\\n \\\"结束U位\\\": \\\"机柜结束位置 此信息一般与机柜开始位置联合使用 \\\\n示例: 2\\\",\\r\\n \\\"*资产状态\\\": \\\"资产状态 \\\\n示例: 在库\\\",\\r\\n \\\"*资产类型\\\": \\\"资产类型 \\\\n示例: 服务器\\\",\\r\\n \\\"购买日期\\\": \\\"购买日期 \\\\n示例: 2020/2/25\\\",\\r\\n \\\"属性信息\\\": \\\"资产属性信息,格式: key=value 如需填写多个请使用回车换行 \\\\n示例: NetworkCard=eth0 \\\\n user=root\\\",\\r\\n \\\"认证服务端口\\\": \\\"ssh/telnet端口 \\\\n示例: 22/23\\\",\\r\\n \\\"认证方式\\\":\\\"用户名密码/密钥 \\\\n示例111111\\\",\\r\\n \\\"用户名\\\":\\\"用户名 \\\\n示例:root\\\",\\r\\n \\\"密码\\\":\\\"auth_type =1 : 记录登录密码 auth_type=2 : 记录密钥密码\\\",\\r\\n \\\"密钥\\\":\\\"密钥内容\\\",\\r\\n \\\"用户名提示\\\":\\\"telnet协议有效\\\",\\r\\n \\\"密码提示\\\":\\\"telnet协议有效\\\",\\r\\n \\\"snmp凭证\\\":\\\"type 开启snmp有效\\\"\\r\\n },\\r\\n \\\"en\\\": {\\r\\n \\\"*Asset Name\\\": \\\"Asset name, unique identifier (required) \\\\nExample: DELL server\\\",\\r\\n \\\"*Sn\\\": \\\"Asset serial number, unique identifier (required) \\\\nExample: A0420200101\\\",\\r\\n \\\"*Virtual machine host\\\": \\\"Virtual machine host, required when the asset is a virtual machine \\\\nExample: DELL physical machine\\\",\\r\\n \\\"*Management ip\\\": \\\"Host address (required), IP format \\\\nExample: 172.0.0.1\\\",\\r\\n \\\"*Brand\\\": \\\"Brand (required) \\\\nExample: DELL\\\",\\r\\n \\\"*Model\\\": \\\"Model (required) \\\\nExample: DELL-D3\\\",\\r\\n \\\"*DC\\\": \\\"Data Center (Required) \\\\nExample: Beijing Telecom Center Computer Room\\\",\\r\\n \\\"Cabinet\\\": \\\"Cabinet \\\\nExample: cabinet-001\\\",\\r\\n \\\"Cabinet Start\\\": \\\"Cabinet start position This information is generally used in conjunction with the cabinet end position \\\\nExample: 1\\\",\\r\\n \\\"Cabinet End\\\": \\\"Cabinet end position This information is generally used in conjunction with the cabinet start position \\\\nExample: 2\\\",\\r\\n \\\"*Asset state\\\": \\\"Asset status \\\\nExample: In stock\\\",\\r\\n \\\"*Asset type\\\": \\\"Asset Type\\\\nExample: Server\\\",\\r\\n \\\"Purchase date\\\": \\\"Purchase date \\\\nExample: 2020/2/25\\\",\\r\\n \\\"Field Information\\\": \\\"Asset field information, format: key=value If you need to fill in more than one, please use carriage return and line feed \\\\nExample: NetworkCard=eth0 \\\\n user=root\\\",\\r\\n \\\"Auth protocol Port\\\": \\\"ssh/telnet \\\\nExample: 22/23\\\",\\r\\n \\\"Auth Type\\\":\\\"User name password / pri key \\\\nExample: 111111\\\",\\r\\n \\\"Auth Username\\\":\\\"username \\\\nExample: root\\\",\\r\\n \\\"Auth Pin\\\":\\\"auth_type =1 : pin value auth_type=2 : pri key pin\\\",\\r\\n \\\"Auth Pri Key\\\":\\\"pri key content\\\",\\r\\n \\\"Auth User Tip\\\":\\\"telnet protocol valid\\\",\\r\\n \\\"Auth Pin Tip\\\":\\\"telnet protocol valid\\\",\\r\\n \\\"Snmp Credential\\\":\\\"snmp protocol valid\\\"\\r\\n }\\r\\
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('asset_chart_tpl', '{\\\"name\\\":\\\"{{asset.sn}}\\\",\\\"type\\\":\\\"assetInfo\\\",\\\"span\\\":12,\\\"height\\\":400,\\\"unit\\\":2}', 1, NULL);\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('asset_ping_from', '2', 1, '1: global\\r\\n\\r\\n2: per-datacenter\\r\\n\\r\\n默认1');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('confagent_name', '{\\\"centos\\\":\\\"confagent-v2.0-x86.rpm\\\",\\\"ubuntu\\\":\\\"confagent-v2.0-x86.zip\\\"}', 1, 'confagent 下载文件名称');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_auth_account', '', 1, '');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_auth_password', '', 1, '');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_host', '', 1, '');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_port', '25', 1, '');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_security_type', 'NONE', 1, 'NONE SSL TLS');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_test_account', '', 1, '');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_timeout', '10', 1, '默认10');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('endpoint_chart_tpl', '{\\\"name\\\":\\\"{{endpoint.name}}\\\",\\\"type\\\":\\\"endpointInfo\\\",\\\"span\\\":12,\\\"height\\\":400,\\\"unit\\\":2}', 1, NULL);\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('expretmpl_export_header', '{\\\"cn\\\":{\\\"*名称\\\":\\\"模板名称(必填) \\\\n示例: CPU利用率模板\\\",\\\"组名\\\":\\\"组名 \\\\n示例: base默认值: default\\\",\\\"*表达式\\\":\\\"表达式内容(必填) \\\\n示例: node_cpu_usage(asset=\\\\\\\"{{asset.host}}\\\\\\\",device=\\\\\\\"{{device}}\\\\\\\")\\\",\\\"描述\\\":\\\"描述 \\\\n示例: node_export CPU利用率模板\\\"},\\\"en\\\":{\\\"*Name\\\":\\\"Template name (required) \\\\nExample: CPU utilization template\\\",\\\"Group Name\\\":\\\"Group Name \\\\nExample: base, Default value: default\\\",\\\"*Expression\\\":\\\"Expression content (required) Optional: node_cpu_usage(asset=\\\\\\\"{{asset.host}}\\\\\\\",device=\\\\\\\"{{device}}\\\\\\\")\\\",\\\"Remark\\\":\\\"Remark \\\\nExample: node_export CPU utilization template\\\"}}', 1, '表达式导入导出模板表头信息');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('license', '<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?><license><product><maximumAssets>2000</maximumAssets><name>NEZHA</name><version>base</version></product><endDate>2021-06-03T14:52:43Z</endDate><signature><digestValue>3403d697d45c594a0d147d556d94ad087272830c</digestValue><signatureValue>35af0e65b3b6d6474db62359a42adf685413144e3ff57f3551f33c54614ed8eb4d705efd25ca873a73af08912242b74d3272cef149ac0b39ac4247e7263f9b395c1892aea7dce0d941ea14ee901f052192ce555c4c438510b31d6fef30b109125a42b19fbcf3190482adab2ffc64d01c31f3dd020a712fc97138c3c52df41f0116c56543faddba8a7393581dee612fec9646ca4edb6f46bf2894eeaff1436feb126ce7155dd8b5514038320b297fab40ca4ed0402eb71951e8b00185fe7fe7f0f0ba13de3d4dc9416a5762214bb8f2bfa7ec688bd119aeaa2a4c4153383b64a463892d63301070c295404538b54f8de7d36ca7fbf40011b9e057cbb1d4a15147</signatureValue></signature><contract>def@gz.com</contract><by>abc</by><genDate>2021-04-16T13:52:38Z</genDate><comment>test license</comment><tokens/><licenseId>111</licenseId><startDate>2021-03-03T14:52:43Z</startDate><customer>zhangsan</customer></license>', 1, '3403d697d45c594a0d147d556d94ad087272830c');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('license_token', 'abbbb', 1, NULL);\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('ldap_timeout', '30', 1, '超时时间秒');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('monitor_endpoint_export_header', '{\\\"cn\\\":{\\\"*系统\\\":\\\"系统名称(必填) \\\\n示例: Nezha\\\",\\\"*组件\\\":\\\"组件名称(必填) \\\\n示例: node_exporter\\\",\\\"名称\\\":\\\"实例名称 \\\\n示例: node_exporter\\\",\\\"资产名称\\\":\\\"资产名称(非必填) 与 主机地址 不能同时为空 \\\\n示例: A0420200101\\\",\\\"配置\\\":\\\"实例配置JSON格式 \\\\n示例: {\\\\\\\"key\\\\\\\":\\\\\\\"value\\\\\\\"}\\\",\\\"启用\\\":\\\"启用状态(非必填) 可选 0:停用 1:启用,为空时默认为1 \\\\n示例: 1\\\"},\\\"en\\\":{\\\"*Project Name\\\":\\\"Project Name(Required) \\\\nExample: Nezha\\\",\\\"*Module Name\\\":\\\"Module Name(Required) \\\\nExample: node_exporter\\\",\\\"Name\\\":\\\"Endpoint name \\\\nExample: node_exporter\\\",\\\"Asset Name\\\":\\\"Asset name(Not required) And host address cannot be empty at the same time \\\\n示例: A0420200101\\\",\\\"Configs\\\":\\\"Endpoint ConfigsJSON format \\\\nExample: {\\\\\\\"key\\\\\\\":\\\\\\\"value\\\\\\\"}\\\",\\\"Enabled\\\":\\\"Enable state (not required) Optional values 0: Disable 1: Enable, when empty, the default is 1 \\\\nExample: 1\\\"}}', 1, 'monitor endpoint 导入表头');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prometheus_federation_enabled', '1', 1, '配置prometheus是否开启联邦模式1开启0关闭界面禁用 添加选择 per-datacenter agent所有endpoint 配置信息 hash 分布到 global prometheus');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prom_cmd_tmpl', 'OPTION=\\\" --config.file=\\'/opt/nezha/nz-confagent/prometheus/prometheus.yml\\' --web.listen-address=\\'127.0.0.1:9090\\' --web.enable-admin-api --storage.tsdb.path=\\'/data/prometheusData\\' --web.enable-lifecycle --storage.tsdb.retention.time=${storageDays}d \\\"', 1, 'prometheus 启动参数模板');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prom_rule_tmpl', '{\\r\\n \\\"groups\\\": [{\\r\\n \\\"name\\\": \\\"alertRule\\\",\\r\\n \\\"rules\\\": [\\r\\n <#if endpointAlert>\\r\\n {\\r\\n \\\"alert\\\": \\\"0\\\",\\r\\n \\\"expr\\\": \\\"up{endpoint!=\\'\\'}>-1\\\",\\r\\n \\\"for\\\": \\\"30s\\\",\\r\\n \\\"annotations\\\": {\\r\\n \\\"summary\\\": \\\"{{$value}}\\\"\\r\\n }\\r\\n }, \\r\\n </#if>\\r\\n <#list ruleList as rule>\\r\\n {\\r\\n \\\"alert\\\": ${rule.id?c},\\r\\n \\\"expr\\\": \\\"(${rule.expr})${rule.operator}${rule.threshold}\\\",\\r\\n \\\"for\\\": \\\"${rule.last}s\\\",\\r\\n \\\"labels\\\": {\\r\\n \\\"severity\\\": \\\"${rule.severity_name}\\\",\\r\\n \\\"severity_id\\\": ${rule.severity_id?c}\\r\\n },\\r\\n \\\"annotations\\\": {\\r\\n \\\"summary\\\": <#if rule.summary?default(\\\"\\\")?trim?length gt 1>\\r\\n \\\"${rule.summary}\\\",\\r\\n <#else>\\\"\\\",</#if>\\r\\n \\\"description\\\": <#if rule.description?default(\\\"\\\")?trim?length gt 1>\\r\\n \\\"${rule.description}\\\"\\r\\n <#else>\\\"\\\"</#if>\\r\\n \\r\\n }\\r\\n }\\r\\n <#sep>,</#sep>\\r\\n </#list>]\\r\\n }]\\r\\n}', 1, 'prometheus rule文件模板');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prom_yml_tmpl', '{\\r\\n \\\"global\\\": {\\r\\n \\\"scrape_interval\\\": \\\"${scrape_interval}s\\\",\\r\\n \\\"scrape_timeout\\\": <#if scrape_timeout??> \\r\\n \\\"${scrape_timeout}s\\\",\\r\\n <#else>\\r\\n \\\"10s\\\",\\r\\n </#if>\\r\\n \\\"evaluation_interval\\\": \\\"${scrape_interval}s\\\"\\r\\n },\\r\\n \\r\\n <#-- alert 配置 -->\\r\\n <#if isAlert>\\r\\n \\\"alerting\\\": {\\r\\n \\\"alertmanagers\\\": [{\\r\\n \\\"path_prefix\\\": \\\"${path_prefix}\\\",\\r\\n \\\"static_configs\\\": [{\\r\\n \\\"targets\\\": [\\\"${alert_url}\\\"]\\r\\n }]\\r\\n }],\\r\\n \\\"alert_relabel_configs\\\": [{\\r\\n \\\"regex\\\": \\\"instance\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }, {\\r\\n \\\"regex\\\": \\\"replica\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }]\\r\\n },\\r\\n \\\"rule_files\\\": [\\\"rule.yml\\\"],\\r\\n </#if>\\r\\n \\r\\n \\r\\n \\r\\n <#-- per-datacenter 配置 -->\\r\\n <#if !isGlobal>\\r\\n \\\"scrape_configs\\\": [\\r\\n <#list endpointList as endpoint>\\r\\n {\\r\\n \\\"job_name\\\": ${endpoint.id?c},\\r\\n \\\"metrics_path\\\": <#if endpoint.config.metrics_path?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${endpoint.config.metrics_path}\\\",\\r\\n <#else>\\r\\n \\\"/metrics\\\",\\r\\n </#if>\\r\\n \\\"scrape_interval\\\": <#if endpoint.config.scrape_interval?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${endpoint.config.scrape_interval}s\\\",\\r\\n <#else>\\r\\n \\\"${scrape_interval}s\\\",\\r\\n </#if>\\r\\n \\\"scrape_timeout\\\": <#if endpoint.config.scrape_timeout?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${endpoint.config.scrape_timeout}s\\\",\\r\\n <#else>\\r\\n <#if scrape_timeout??> \\r\\n \\\"${scrape_timeout}s\\\",\\r\\n <#else>\\r\\n \\\"10s\\\",\\r\\n </#if>\\r\\n </#if>\\r\\n\\r\\n\\r\\n\\r\\n <#if endpoint.config.basic_auth??&& (endpoint.config.basic_auth?size >0)>\\r\\n <#if endpoint.config.basic_auth.username?default(\\\"\\\")?trim?length gt 0 && endpoint.config.basic_auth.password?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"basic_auth\\\":{\\r\\n \\\"username\\\": \\\"${endpoint.config.basic_auth.username}\\\",\\r\\n \\\"password\\\": \\\"${endpoint.config.basic_auth.password}\\\"\\r\\n },\\r\\n </#if>\\r\\n </#if>\\r\\n \\r\\n \\r\\n <#if endpoint.config.bearer_token??&&endpoint.config.bearer_token?trim?length gt 0>\\r\\n \\\"authorization\\\":{\\r\\n \\\"type\\\":\\\"Bearer\\\",\\r\\n \\\"credentials\\\":\\\"${endpoint.config.bearer_token}\\\"\\r\\n },\\r\\n </#if>\\r\\n\\r\\n \\r\\n <#-- params 不为空且类型为 http ,添加 params -->\\r\\n <#if endpoint.config.params??&& (endpoint.config.params?size >0) && endpoint.module.type == \\\"http\\\">\\r\\n \\\"params\\\":{\\r\\n <#list endpoint.config.params?keys as itemKey>\\r\\n \\\"${itemKey}\\\":[\\r\\n <#list endpoint.config.params[itemKey] as pojo>\\r\\n \\\"${pojo}\\\"\\r\\n <#sep>,</#sep>\\r\\n </#list>\\r\\n ]\\r\\n <#sep>,</#sep>\\r\\n </#list>\\r\\n },\\r\\n <#elseif endpoint.module.type == \\\"snmp\\\">\\r\\n <#-- 类型是 snmp ,组织 param 数据 原来params弃用因为 snmp_exporter 不支持其他参数 -->\\r\\n \\\"params\\\":{\\r\\n \\\"target\\\":[ \\\"${endpoint.config.host}:${endpoint.config.port?c}\\\" ],\\r\\n \\\"module\\\":[ \\\"${endpoint.module.name}\\\" ]\\r\\n },\\r\\n </#if>\\r\\n \\r\\n \\\"static_configs\\\": [{\\r\\n \\\"targets\\\": [<#if endpoint.module.type == \\\"http\\\">\\r\\n \\\"${endpoint.config.host}:${endpoint.config.port?c}\\\"\\r\\n <#else>\\r\\n \\\"127.0.0.1:9116\\\"\\r\\n </#if>\\r\\n ],\\r\\n \\\"labels\\\": {\\r\\n \\\"data
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('session_timeout', '30', 1, '默认30不小于 15 单位minute');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('system_logo', '', 1, NULL);\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('unsaved_change', 'on', 1, '未保存提示开关');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('terminal_record_local_retention', '365', 1, '默认365单位天,record数据保留天数');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('terminal_telnet_pin_tip', 'assword:', 1, '默认assword:');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('terminal_telnet_user_tip', 'ogin:', 1, '默认ogin:');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('terminal_timeout', '30', 1, '默认30单位minute');\r\n"
2021-05-12 15:56:47 +08:00
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('snmp_trap_listen_port', '160', 1, 'snmp trap接收端口');\r\n"
2021-05-08 19:33:06 +08:00
+ "update sys_config set param_key =\"default_scrape_interval\" where param_key=\"scrape_interval\";\r\n"
+ "update sys_config set param_key =\"default_scrape_timeout\" where param_key=\"scrape_timeout\";\r\n"
2021-05-12 15:56:47 +08:00
+ "update sys_config set param_value =\"Asia/Almaty\" where param_key=\"timezone\";\r\n"
2021-05-08 19:33:06 +08:00
);
// 修改sys_user表数据 初始化name字段内容
sb.append("update sys_user set name = username;");
sqlDao.execute(sb.toString());
2021-05-12 15:56:47 +08:00
*/
2021-05-08 19:33:06 +08:00
}
public void transferData() {
// dc数据同步
dcService.handler();
// 资产数据同步 snmp认证表数据同步 tag相关数据同步
assetAssetService.handler();
// 告警相关数据同步
alertMessageService.handler();
// 图表相关数据同步
chartService.handler();
2021-05-08 19:33:06 +08:00
// project module endpoint 数据同步
endpointService.handler();
2021-05-12 15:56:47 +08:00
// 将原来数据库的数据数据还原
this.dataRestore();
// project topo相关图表数据同步
projectTopoService.handler();
2021-05-12 15:56:47 +08:00
}
public void dataRestore() {
StringBuilder sb =new StringBuilder();
// sys_user表数据还原
List<SysUserEntity> users = sysUserService.queryNewUsers();
List<SysUserEntity> oldUsers = sysUserService.queryOldUsers();
Map<Long, SysUserEntity> userIdAndEntity = users.stream().collect(Collectors.toMap(SysUserEntity::getId, Function.identity()));
for(SysUserEntity user : oldUsers) {
SysUserEntity sysUserEntity = userIdAndEntity.get(user.getUserId());
if(ToolUtil.isNotEmpty(sysUserEntity)) {
sb.append("update sys_user set id='"+user.getUserId()+"',username='"+user.getUsername()+"',pin='"
+user.getPassword()+"',salt='"+user.getSalt()+"',email='"+user.getEmail()+"',status='"
+user.getStatus()+"',lang='"+user.getLang()
+"',source='"+user.getSource()+"',name='"+user.getUsername()+"';");
}else {
sb.append("insert into sys_user (id,username,pin,salt,email,status,"
+ "lang,source,name) values('"+user.getUserId()+"','"+user.getUsername()+"','"+user.getPassword()
+"','"+user.getSalt()+"','"+user.getEmail()+"','"+user.getStatus()
+"','"+user.getLang()+"','"+user.getSource()+"','"+user.getUsername()+"');");
}
}
//
sqlDao.execute(sb.toString());
// sys_config表数据
List<SysConfigEntity> newDatas = sysConfigService.list();
List<SysConfigEntity> oldDatas = sysConfigService.querySysConfigEntitys();
Map<String, String> oldDataMap = oldDatas.stream().collect(Collectors.toMap(SysConfigEntity::getParamKey, SysConfigEntity::getParamValue));
for(SysConfigEntity data : newDatas) {
if(data.getParamKey().equals("default_scrape_interval")) {
data.setParamValue(oldDataMap.get("scrape_interval"));
}else if(data.getParamKey().equals("default_scrape_timeout")) {
data.setParamValue(oldDataMap.get("scrape_timeout"));
}else if(data.getParamKey().equals("timezone")) {
data.setParamValue("Asia/Shanghai");
}else if(data.getParamKey().endsWith("confagent_path") || data.getParamKey().equals("system_version")){
continue;
2021-05-12 15:56:47 +08:00
}else {
String value = oldDataMap.get(data.getParamKey());
if(value!=null) {
data.setParamValue(value);
}
}
}
sysConfigService.updateBatchById(newDatas);
// prom_server snmp_mib link project_topo表数据同步
StringBuilder restoreData = new StringBuilder();
restoreData.append("INSERT INTO prom_server (id, dc_id, `host`, `port`, type, `status`, check_time,token ) SELECT id, idc_id,`host`,`port`,type,`status`,check_time,\"\" FROM prom_server_copy;\r\n"
+ " INSERT INTO project_topo (id, project_id, topo,update_at,update_by) SELECT id, project_id, topo,update_at,update_by from project_topo_copy;\r\n"
+ " INSERT INTO project_topo_icon (id,name,bytes,type,unit) select id,name,bytes,type,-1 from project_topo_icon_copy where id > 4;\r\n"
+ " INSERT INTO snmp_mib (id,name,file_name,content,models,remark,update_by,update_at,tree) select id,name,file_name,content,models,remark,update_by,update_at,tree from snmp_mib_copy;\r\n"
+ " INSERT INTO link (id,name,create_by,url,build_in,weight) select id,name,create_by,url,build_in,0 from link_copy;"
+ " INSERT INTO cabinet (id,name,dc_id,u_size,remark,seq,x,y) select id,name,idc_id,u_size,remark,seq,x,y from cabinet_copy;");
sqlDao.execute(restoreData.toString());
2021-05-08 19:33:06 +08:00
}
}