package com.nis.handler; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.sql.SQLException; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; import javax.sql.DataSource; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; 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; import org.springframework.stereotype.Service; import org.springframework.util.ResourceUtils; import com.nis.dao.SqlDao; import com.nis.entity.SysConfigEntity; import com.nis.entity.SysUserEntity; 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; import com.nis.service.ChartService; import com.nis.service.DcService; import com.nis.service.EndpointService; import com.nis.service.ProjectTopoService; import com.nis.service.SysConfigService; import com.nis.service.SysUserService; import com.nis.util.Constant; import com.nis.util.ToolUtil; import cn.hutool.core.io.IoUtil; 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; @Autowired private DataSource dataSource; @Autowired private SysUserService sysUserService; @Autowired private SysConfigService sysConfigService; @Autowired private ProjectTopoService projectTopoService; @Autowired private AssetTypeConfService assetTypeConfService; 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); } 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 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 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 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" + "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';"; 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" + " `method_id` int(10) NOT NULL COMMENT '通知方式id 关联ALERT_NOTIFICATION_METHOD.id',\r\n" + " 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表属性id,name,username,email,mobile',\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\\n1:ssh\\r\\n\\r\\n2:telnet',\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 '纬度 -90,90',\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包含值:cmd,prometheus,rule,snmp,blackbox',\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模板 支持 {{}} 变量替换,asset,module\\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 '协议,可选值:SSH,TELNET。统一大写',\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 = group,span = 12, 用户修改无效',\r\n" + " `height` int(10) NOT NULL COMMENT 'type = group,height = -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 '可选值:dashboard,asset,project,module,endpoint, 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 * @throws IOException * @throws SQLException * @throws ScriptException */ 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(); /*StringBuilder sb = new StringBuilder(); 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\\n}', 1, NULL);\r\n" + "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', '2000NEZHAbase2021-06-03T14:52:43Z3403d697d45c594a0d147d556d94ad087272830c35af0e65b3b6d6474db62359a42adf685413144e3ff57f3551f33c54614ed8eb4d705efd25ca873a73af08912242b74d3272cef149ac0b39ac4247e7263f9b395c1892aea7dce0d941ea14ee901f052192ce555c4c438510b31d6fef30b109125a42b19fbcf3190482adab2ffc64d01c31f3dd020a712fc97138c3c52df41f0116c56543faddba8a7393581dee612fec9646ca4edb6f46bf2894eeaff1436feb126ce7155dd8b5514038320b297fab40ca4ed0402eb71951e8b00185fe7fe7f0f0ba13de3d4dc9416a5762214bb8f2bfa7ec688bd119aeaa2a4c4153383b64a463892d63301070c295404538b54f8de7d36ca7fbf40011b9e057cbb1d4a15147def@gz.comabc2021-04-16T13:52:38Ztest license1112021-03-03T14:52:43Zzhangsan', 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 Configs,JSON 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 \\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>\\\"\\\",\\r\\n \\\"description\\\": <#if rule.description?default(\\\"\\\")?trim?length gt 1>\\r\\n \\\"${rule.description}\\\"\\r\\n <#else>\\\"\\\"\\r\\n \\r\\n }\\r\\n }\\r\\n <#sep>,\\r\\n ]\\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 \\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 \\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 \\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 \\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 \\r\\n \\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 \\r\\n \\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 \\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>,\\r\\n \\r\\n ]\\r\\n <#sep>,\\r\\n \\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 \\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 \\r\\n ],\\r\\n \\\"labels\\\": {\\r\\n \\\"datacenter\\\": \\\"${endpoint.dc.name}\\\",\\r\\n \\\"datacenter_id\\\":${endpoint.dc.id?c},\\r\\n \\r\\n \\\"project\\\": \\\"${endpoint.project.name}\\\",\\r\\n \\\"project_id\\\": ${endpoint.project.id?c},\\r\\n \\r\\n \\\"asset\\\": \\\"${endpoint.asset.name}\\\",\\r\\n \\\"asset_id\\\": ${endpoint.asset.id?c},\\r\\n \\r\\n \\\"module\\\": \\\"${endpoint.module.name}\\\",\\r\\n \\\"module_id\\\": ${endpoint.module.id?c},\\r\\n \\r\\n \\\"endpoint\\\": \\\"${endpoint.name}\\\",\\r\\n \\\"endpoint_id\\\": ${endpoint.id?c},\\r\\n \\r\\n \\\"nz_agent_id\\\": ${endpoint.promserver.id?c}\\r\\n \\r\\n \\r\\n <#if endpoint.config.labels??&& (endpoint.config.labels?size >0)>\\r\\n ,\\r\\n \\r\\n <#-- 补充用户自定义 Labels -->\\r\\n <#if endpoint.config.labels??&& (endpoint.config.labels?size >0)>\\r\\n <#list endpoint.config.labels?keys as key>\\r\\n <#if key != \\\"datacenter\\\" && key != \\\"datacenter_id\\\" && key != \\\"project\\\" && key != \\\"project_id\\\" && key != \\\"asset\\\" && key != \\\"asset_id\\\" && key != \\\"module\\\" && key != \\\"module_id\\\" && key != \\\"endpoint\\\" && key != \\\"endpoint_id\\\">\\r\\n \\\"${key}\\\":\\\"${endpoint.config.labels[key]}\\\"<#sep>,\\r\\n \\r\\n \\r\\n \\r\\n }\\r\\n }],\\r\\n \\\"relabel_configs\\\": [\\r\\n {\\r\\n \\\"regex\\\": \\\"instance\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n },\\r\\n {\\r\\n \\\"regex\\\": \\\"job\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }\\r\\n ],\\r\\n \\\"metric_relabel_configs\\\": [\\r\\n {\\r\\n \\\"regex\\\": \\\"instance\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }\\r\\n ]\\r\\n }\\r\\n <#sep>,\\r\\n \\r\\n \\r\\n <#-- ping 配置 -->\\r\\n \\r\\n <#if endpointList??&&(endpointList?size>0)>\\r\\n ,\\r\\n \\r\\n \\r\\n <#list assetList as asset>\\r\\n {\\r\\n \\\"job_name\\\": \\\"asset_ping_${asset.id?c}\\\",\\r\\n \\\"metrics_path\\\": \\\"/probe\\\",\\r\\n \\\"scrape_interval\\\": <#if asset.assetPingInterval?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${asset.assetPingInterval}s\\\",\\r\\n <#else>\\r\\n \\\"${scrape_interval}s\\\",\\r\\n \\r\\n \\\"scrape_timeout\\\": <#if asset.scrape_timeout?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${asset.scrape_timeout}s\\\",\\r\\n <#else>\\r\\n <#if scrape_timeout??> \\r\\n \\\"${scrape_timeout}s\\\",\\r\\n <#else>\\r\\n \\\"10s\\\",\\r\\n \\r\\n \\r\\n \\\"params\\\": {\\r\\n \\\"target\\\":[ \\\"${asset.manageIp}\\\" ],\\r\\n \\\"module\\\":[ \\\"ping\\\" ]\\r\\n },\\r\\n \\\"static_configs\\\": [{\\r\\n \\\"targets\\\": [\\\"127.0.0.1:9115\\\"],\\r\\n \\\"labels\\\": {\\r\\n \\\"datacenter\\\": \\\"${asset.dc.name}\\\",\\r\\n \\\"host\\\": \\\"${asset.manageIp}\\\",\\r\\n \\\"module\\\": \\\"ping\\\",\\r\\n \\\"source_ip\\\": \\\"${asset.promserver.host}\\\",\\r\\n \\\"nz_agent_id\\\": ${asset.promserver.id?c}\\r\\n }\\r\\n }],\\r\\n \\\"relabel_configs\\\": [\\r\\n {\\r\\n \\\"regex\\\": \\\"instance\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }\\r\\n ],\\r\\n \\\"metric_relabel_configs\\\": [\\r\\n {\\r\\n \\\"regex\\\": \\\"instance\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }\\r\\n ]\\r\\n }\\r\\n <#sep>,\\r\\n \\r\\n ]\\r\\n <#else>\\r\\n <#-- global 配置 -->\\r\\n \\\"scrape_configs\\\": [\\r\\n <#list jobList as jobPojo>\\r\\n {\\r\\n \\\"job_name\\\": \\\"${jobPojo.job_name}\\\",\\r\\n <#if jobPojo.isFederate> \\r\\n \\\"honor_labels\\\": ${jobPojo.honor_labels},\\r\\n \\\"params\\\": {\\r\\n \\\"match[]\\\": [\\r\\n <#-- 开启联邦 -->\\r\\n <#if jobPojo.fedeEnabled>\\r\\n <#if jobPojo.scrapePing> \\r\\n \\\"{job=~\\\\\\\"asset_ping_.+\\\\\\\",nz_agent_id != \\\\\\\"${jobPojo.excludeAgentId}\\\\\\\"}\\\"\\r\\n <#else>\\r\\n \\\"{__name__=~\\\\\\\".+\\\\\\\",nz_agent_id != \\\\\\\"${jobPojo.excludeAgentId}\\\\\\\"}\\\"\\r\\n \\r\\n <#else>\\r\\n <#-- 联邦关闭,抓取所有指标即可 -->\\r\\n \\\"{__name__=~\\\\\\\".+\\\\\\\",nz_agent_id != \\\\\\\"${jobPojo.excludeAgentId}\\\\\\\"}\\\"\\r\\n \\r\\n ]\\r\\n },\\r\\n \\\"authorization\\\":{\\r\\n \\\"type\\\":\\\"Bearer\\\",\\r\\n \\\"credentials\\\":\\\"${jobPojo.token}\\\"\\r\\n },\\r\\n \\r\\n \\\"metrics_path\\\": <#if jobPojo.metrics_path?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${jobPojo.metrics_path}\\\",\\r\\n <#else>\\r\\n \\\"/metrics\\\",\\r\\n \\r\\n \\\"static_configs\\\":[\\r\\n <#list jobPojo.staticConfigList as staticConf >\\r\\n {\\r\\n \\\"targets\\\": [\\r\\n <#list staticConf.targets as targetConf>\\r\\n \\\"${targetConf}\\\"<#sep>,\\r\\n \\r\\n ]\\r\\n <#if staticConf.labels ??&& (staticConf.labels?size >0)>\\r\\n ,\\r\\n \\\"labels\\\": {\\r\\n <#list staticConf.labels?keys as itemKey>\\r\\n \\\"${itemKey}\\\":<#if staticConf.labels[itemKey]?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${staticConf.labels[itemKey]}\\\"\\r\\n <#else>\\\"\\\"<#sep>,\\r\\n \\r\\n } \\r\\n \\r\\n }<#sep>,\\r\\n \\r\\n ],\\r\\n \\\"relabel_configs\\\": [\\r\\n {\\r\\n \\\"regex\\\": \\\"job\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }\\r\\n <#if jobPojo.instanceRelabel> \\r\\n ,\\r\\n {\\r\\n \\\"regex\\\": \\\"instance\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }\\r\\n \\r\\n ],\\r\\n \\\"metric_relabel_configs\\\": [\\r\\n {\\r\\n \\\"regex\\\": \\\"instance\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }\\r\\n ]\\r\\n }<#sep>,\\r\\n \\r\\n \\r\\n <#-- ping 配置 -->\\r\\n \\r\\n <#if jobList??&&(jobList?size>0)>\\r\\n ,\\r\\n \\r\\n \\r\\n <#list assetList as asset>\\r\\n {\\r\\n \\\"job_name\\\": \\\"asset_ping_${asset.id?c}\\\",\\r\\n \\\"metrics_path\\\": \\\"/probe\\\",\\r\\n \\\"scrape_interval\\\": <#if asset.assetPingInterval?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${asset.assetPingInterval}s\\\",\\r\\n <#else>\\r\\n \\\"${scrape_interval}s\\\",\\r\\n \\r\\n \\\"scrape_timeout\\\": <#if asset.scrape_timeout?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${asset.scrape_timeout}s\\\",\\r\\n <#else>\\r\\n <#if scrape_timeout??> \\r\\n \\\"${scrape_timeout}s\\\",\\r\\n <#else>\\r\\n \\\"10s\\\",\\r\\n \\r\\n \\r\\n \\\"params\\\": {\\r\\n \\\"target\\\":[ \\\"${asset.manageIp}\\\" ],\\r\\n \\\"module\\\":[ \\\"ping\\\" ]\\r\\n },\\r\\n \\\"static_configs\\\": [{\\r\\n \\\"targets\\\": [\\\"127.0.0.1:9115\\\"],\\r\\n \\\"labels\\\": {\\r\\n \\\"datacenter\\\": \\\"${asset.dc.name}\\\",\\r\\n \\\"host\\\": \\\"${asset.manageIp}\\\",\\r\\n \\\"module\\\": \\\"ping\\\",\\r\\n \\\"source_ip\\\": \\\"${asset.promserver.host}\\\",\\r\\n \\\"nz_agent_id\\\": ${asset.promserver.id?c}\\r\\n }\\r\\n }],\\r\\n \\\"relabel_configs\\\": [\\r\\n {\\r\\n \\\"regex\\\": \\\"instance\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }\\r\\n ],\\r\\n \\\"metric_relabel_configs\\\": [\\r\\n {\\r\\n \\\"regex\\\": \\\"instance\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }\\r\\n ]\\r\\n }\\r\\n <#sep>,\\r\\n \\r\\n \\r\\n \\r\\n <#if ( jobList??&&(jobList?size>0)) || assetList??&&(assetList?size>0)>\\r\\n ,\\r\\n \\r\\n \\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 \\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 \\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 \\r\\n \\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 \\r\\n \\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 \\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>,\\r\\n \\r\\n ]\\r\\n <#sep>,\\r\\n \\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 \\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 \\r\\n ],\\r\\n \\\"labels\\\": {\\r\\n \\\"datacenter\\\": \\\"${endpoint.dc.name}\\\",\\r\\n \\\"datacenter_id\\\":${endpoint.dc.id?c},\\r\\n \\r\\n \\\"project\\\": \\\"${endpoint.project.name}\\\",\\r\\n \\\"project_id\\\": ${endpoint.project.id?c},\\r\\n \\r\\n \\\"asset\\\": \\\"${endpoint.asset.name}\\\",\\r\\n \\\"asset_id\\\": ${endpoint.asset.id?c},\\r\\n \\r\\n \\\"module\\\": \\\"${endpoint.module.name}\\\",\\r\\n \\\"module_id\\\": ${endpoint.module.id?c},\\r\\n \\r\\n \\\"endpoint\\\": \\\"${endpoint.name}\\\",\\r\\n \\\"endpoint_id\\\": ${endpoint.id?c},\\r\\n \\r\\n \\\"nz_agent_id\\\": ${endpoint.promserver.id?c}\\r\\n \\r\\n \\r\\n <#if endpoint.config.labels??&& (endpoint.config.labels?size >0)>\\r\\n ,\\r\\n \\r\\n <#-- 补充用户自定义 Labels -->\\r\\n <#if endpoint.config.labels??&& (endpoint.config.labels?size >0)>\\r\\n <#list endpoint.config.labels?keys as key>\\r\\n <#if key != \\\"datacenter\\\" && key != \\\"datacenter_id\\\" && key != \\\"project\\\" && key != \\\"project_id\\\" && key != \\\"asset\\\" && key != \\\"asset_id\\\" && key != \\\"module\\\" && key != \\\"module_id\\\" && key != \\\"endpoint\\\" && key != \\\"endpoint_id\\\">\\r\\n \\\"${key}\\\":\\\"${endpoint.config.labels[key]}\\\"<#sep>,\\r\\n \\r\\n \\r\\n \\r\\n }\\r\\n }],\\r\\n \\\"relabel_configs\\\": [\\r\\n {\\r\\n \\\"regex\\\": \\\"instance\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n },\\r\\n {\\r\\n \\\"regex\\\": \\\"job\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }\\r\\n ],\\r\\n \\\"metric_relabel_configs\\\": [\\r\\n {\\r\\n \\\"regex\\\": \\\"instance\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }\\r\\n ]\\r\\n }\\r\\n <#sep>,\\r\\n \\r\\n \\r\\n ]\\r\\n \\r\\n}', 1, 'prometheus config文件模板');\r\n" + "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" + "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('snmp_trap_listen_port', '160', 1, 'snmp trap接收端口');\r\n" + "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" + "update sys_config set param_value =\"Asia/Almaty\" where param_key=\"timezone\";\r\n" ); // 修改sys_user表数据 初始化name字段内容 sb.append("update sys_user set name = username;"); sqlDao.execute(sb.toString()); */ } public void transferData() { // dc数据同步 dcService.handler(); // 资产数据同步 snmp认证表数据同步 tag相关数据同步 assetAssetService.handler(); // 告警相关数据同步 alertMessageService.handler(); // 图表相关数据同步 chartService.handler(); // project module endpoint 数据同步 endpointService.handler(); // 将原来数据库的数据数据还原 this.dataRestore(); // project topo相关图表数据同步 projectTopoService.handler(); } public void dataRestore() { StringBuilder sb =new StringBuilder(); // sys_user表数据还原 List users = sysUserService.queryNewUsers(); List oldUsers = sysUserService.queryOldUsers(); Map 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 newDatas = sysConfigService.list(); List oldDatas = sysConfigService.querySysConfigEntitys(); Map 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; }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()); } }