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

1118 lines
103 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<String> tableNames = sqlDao.allTables();
for(String tableName : tableNames) {
sb.append("CREATE TABLE "+tableName+"_copy SELECT * FROM "+tableName+";");
}
sqlDao.execute(sb.toString());
}
public void removeCopy() {
StringBuilder sb =new StringBuilder();
List<String> sqls = sqlDao.allRemoveCopyTables();
for(String sql : sqls) {
sb.append(sql);
}
sqlDao.execute(sb.toString());
}
public void dropTriggers() {
String databaseName = Constant.DATABASE_NAME;
log.info("databaseName is {}",databaseName);
if(StrUtil.isEmpty(databaseName)) {
throw new RuntimeException("database name error");
}
// 批量删除触发器
StringBuilder sb =new StringBuilder();
List<String> allTriggers = sqlDao.allTriggers(databaseName);
for(String trigger : allTriggers) {
sb.append("drop trigger "+trigger+";");
}
if(StrUtil.isNotBlank(sb.toString())) {
sqlDao.execute(sb.toString());
}
}
public void alterTable() {
String sysLog = "ALTER TABLE `sys_log` \r\n"
+ "ADD COLUMN `sys_api_key` int(10) NULL COMMENT '关联 sys_api_key.id' AFTER `create_date`;";
sqlDao.execute(sysLog);
String sysMenu = "ALTER TABLE `sys_menu` \r\n"
+ "ADD COLUMN `description` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,\r\n"
+ "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表属性idnameusernameemailmobile',\r\n"
+ " `state` int(1) DEFAULT NULL COMMENT '状态0停用1可用',\r\n"
+ " `build_in` int(1) NOT NULL COMMENT '可选值0非内置1内置默认0系统内置一条 email 通知',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String alertSeverityConf = "CREATE TABLE `alert_severity_conf` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) NOT NULL,\r\n"
+ " `color` varchar(64) NOT NULL,\r\n"
+ " `weight` int(3) NOT NULL COMMENT '1-100 顺序取值不重复,值越小告警级别越高',\r\n"
+ " `remark` varchar(255) NOT NULL,\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String alertSilenceConf = "CREATE TABLE `alert_silence_conf` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `name` varchar(255) DEFAULT NULL,\r\n"
+ " `matchers` varchar(4096) NOT NULL,\r\n"
+ " `reason` varchar(1024) NOT NULL COMMENT '记录告警静音原因\\r\\n\\r\\n默认“”',\r\n"
+ " `start_at` datetime NOT NULL COMMENT '开始时间',\r\n"
+ " `end_at` datetime NOT NULL COMMENT '结束时间',\r\n"
+ " `utime` datetime NOT NULL,\r\n"
+ " `state` int(1) NOT NULL COMMENT '可选值:\\r\\n\\r\\n1:active\\r\\n\\r\\n2:pending\\r\\n\\r\\n3:expired',\r\n"
+ " `seq` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '全局唯一,用于导入撤销\\r\\n\\r\\n默认“”',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetAsset = "CREATE TABLE `asset_asset` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(128) NOT NULL COMMENT '不重复,唯一索引',\r\n"
+ " `number` varchar(128) NOT NULL DEFAULT '' COMMENT '资产编号',\r\n"
+ " `sn` varchar(128) NOT NULL DEFAULT '' COMMENT '资产序列号',\r\n"
+ " `pid` int(10) NOT NULL DEFAULT -1 COMMENT '默认:-1\\r\\n\\r\\n只有type vm = 1可以且必须填写此字段且 pid.type vmh = 1',\r\n"
+ " `type_id` int(10) NOT NULL,\r\n"
+ " `state_id` int(10) NOT NULL,\r\n"
+ " `brand_id` int(10) NOT NULL,\r\n"
+ " `model_id` int(10) NOT NULL,\r\n"
+ " `dc_id` int(10) NOT NULL,\r\n"
+ " `cabinet_id` int(10) DEFAULT NULL,\r\n"
+ " `cabinet_start` int(10) DEFAULT NULL,\r\n"
+ " `cabinet_end` int(10) DEFAULT NULL,\r\n"
+ " `manage_ip` varchar(64) NOT NULL COMMENT '管理ip',\r\n"
+ " `purchase_date` date DEFAULT NULL COMMENT '购买日期',\r\n"
+ " `create_at` datetime DEFAULT NULL COMMENT '添加时间',\r\n"
+ " `update_at` datetime DEFAULT NULL COMMENT '更新时间',\r\n"
+ " `create_by` int(10) DEFAULT NULL COMMENT '添加人与user表关联',\r\n"
+ " `update_by` int(10) DEFAULT NULL COMMENT '最后更新人',\r\n"
+ " `seq` varchar(64) DEFAULT NULL,\r\n"
+ " `auth_protocol_port` int(10) DEFAULT NULL COMMENT '认证服务端口',\r\n"
+ " `auth_type` char(1) DEFAULT NULL COMMENT '认证方式1用户名密码\\r\\n\\r\\n2密钥',\r\n"
+ " `auth_username` varchar(64) DEFAULT NULL COMMENT '用户名',\r\n"
+ " `auth_pin` varchar(256) DEFAULT NULL COMMENT '密码auth_type =1 : 记录登录密码\\r\\n\\r\\nauth_type=2 : 记录密钥密码',\r\n"
+ " `auth_pri_key` text DEFAULT NULL COMMENT '秘钥',\r\n"
+ " `auth_user_tip` varchar(64) DEFAULT NULL COMMENT '用户名提示 telnet协议有效',\r\n"
+ " `auth_pin_tip` varchar(64) DEFAULT NULL COMMENT '密码提示 telnet协议有效',\r\n"
+ " `snmp_credential_id` int(10) DEFAULT NULL COMMENT 'snmp凭证id type 开启snmp有效',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetBrand = "CREATE TABLE `asset_brand` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) DEFAULT NULL COMMENT '名称',\r\n"
+ " `remark` varchar(256) DEFAULT '' COMMENT '备注',\r\n"
+ " `seq` varchar(64) DEFAULT NULL,\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetFieldGroup = "CREATE TABLE `asset_field_group` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) DEFAULT NULL COMMENT '名称',\r\n"
+ " `remark` varchar(1024) DEFAULT NULL,\r\n"
+ " `build_in` char(1) DEFAULT NULL COMMENT '1:内置0非内置默认0\\r\\n\\r\\n内置数据不允许删除',\r\n"
+ " `seq` varchar(64) DEFAULT NULL COMMENT '用户导入撤销',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetFieldMeta = "CREATE TABLE `asset_field_meta` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) NOT NULL,\r\n"
+ " `meta_key` varchar(128) NOT NULL COMMENT '唯一不重复 正则:[\\\\w]+',\r\n"
+ " `group_id` varchar(128) NOT NULL COMMENT '关联 asset_field_group.id',\r\n"
+ " `search` char(1) NOT NULL DEFAULT '0' COMMENT '默认0 0不可查询\\r\\n\\r\\n1可查询',\r\n"
+ " `display` char(1) NOT NULL DEFAULT '0' COMMENT '默认0 0列表不展示\\r\\n\\r\\n1列表展示',\r\n"
+ " `type` varchar(32) NOT NULL DEFAULT 'TEXT' COMMENT '属性输入类型',\r\n"
+ " `remark` varchar(64) DEFAULT NULL,\r\n"
+ " `param` text NOT NULL COMMENT '默认:{}',\r\n"
+ " `build_in` int(1) NOT NULL DEFAULT 0 COMMENT '1:内置0非内置默认0',\r\n"
+ " `seq` varchar(64) DEFAULT NULL COMMENT '用户导入撤销',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetFieldValue = "CREATE TABLE `asset_field_value` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `asset_id` int(10) NOT NULL COMMENT ' 关联 asset.id',\r\n"
+ " `meta_id` int(10) NOT NULL COMMENT '关联asset_field_meta.id',\r\n"
+ " `value` text DEFAULT NULL,\r\n"
+ " `seq` varchar(64) DEFAULT NULL COMMENT '用户导入撤销',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetModel = "CREATE TABLE `asset_model` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `brand_id` int(10) NOT NULL,\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '型号名称',\r\n"
+ " `remark` varchar(256) NOT NULL DEFAULT '',\r\n"
+ " `seq` varchar(64) DEFAULT NULL,\r\n"
+ " `usize` int(2) NOT NULL DEFAULT 1,\r\n"
+ " `chart_ids` varchar(4096) DEFAULT NULL COMMENT 'chart 模板id',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetStateConf = "CREATE TABLE `asset_state_conf` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '型号名称',\r\n"
+ " `ping` char(1) NOT NULL COMMENT '0关闭\\r\\n\\r\\n1开启',\r\n"
+ " `monitor` char(1) NOT NULL COMMENT '0关闭\\r\\n\\r\\n1开启',\r\n"
+ " `alert` char(1) NOT NULL COMMENT '0关闭\\r\\n\\r\\n1开启',\r\n"
+ " `remark` varchar(1024) NOT NULL DEFAULT '' COMMENT '默认“”',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置1:内置0非内置默认0\\r\\n\\r\\n内置数据不允许删除',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String assetTypeConf = "CREATE TABLE `asset_type_conf` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `pid` int(10) NOT NULL DEFAULT 0 COMMENT '父id 默认为0',\r\n"
+ " `vm` char(1) NOT NULL COMMENT '是否为虚拟机 0:不是虚拟机\\r\\n\\r\\n1:是虚拟机',\r\n"
+ " `vmh` char(1) NOT NULL COMMENT '是否为虚拟机宿主 0:不是宿主机,不支持挂载 虚拟机\\r\\n\\r\\n1:是宿主机,支持挂载虚拟机',\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '名称',\r\n"
+ " `remark` varchar(1024) NOT NULL DEFAULT '',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '1:内置0非内置默认0\\r\\n\\r\\n内置数据不允许删除',\r\n"
+ " `auth_protocol` int(1) NOT NULL DEFAULT 0 COMMENT '认证协议 默认0 \\r\\n\\r\\n0\\r\\n\\r\\n1ssh\\r\\n\\r\\n2telnet',\r\n"
+ " `snmp_enable` int(1) NOT NULL DEFAULT 0 COMMENT '是否支持snmp 默认0 \\r\\n\\r\\n0不支持\\r\\n\\r\\n1支持',\r\n"
+ " `snmp_collect` int(1) NOT NULL DEFAULT 0 COMMENT '是否开启snmp采集 默认0 \\r\\n\\r\\n0不开启\\r\\n\\r\\n1开启\\r\\n\\r\\n当snmp_enable=1时有效',\r\n"
+ " `ssh_collect` int(1) NOT NULL COMMENT '是否开启ssh采集 默认0 \\r\\n\\r\\n0不开启\\r\\n\\r\\n1开启\\r\\n\\r\\n当 auth_protocol=1时有效',\r\n"
+ " `ssh_collect_script` varchar(256) NOT NULL DEFAULT '',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String dc = "CREATE TABLE `dc` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键自增',\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '名称',\r\n"
+ " `location` varchar(256) DEFAULT NULL COMMENT '位置',\r\n"
+ " `tel` varchar(128) DEFAULT NULL COMMENT '联系电话',\r\n"
+ " `principal` int(10) DEFAULT NULL COMMENT '机房负责人',\r\n"
+ " `seq` varchar(64) DEFAULT NULL COMMENT '全局唯一,用于导入撤销',\r\n"
+ " `x` int(10) DEFAULT NULL COMMENT '列',\r\n"
+ " `y` int(10) DEFAULT NULL COMMENT '行',\r\n"
+ " `longitude` double(8,5) DEFAULT NULL COMMENT '经度 -180,180',\r\n"
+ " `latitude` double(8,5) DEFAULT NULL COMMENT '纬度 -9090',\r\n"
+ " `state` varchar(8) NOT NULL DEFAULT 'ON' COMMENT '可选值ON,OFF 默认ON',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
String monitorEndpoint = "CREATE TABLE `monitor_endpoint` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(128) NOT NULL COMMENT '名称',\r\n"
+ " `module_id` int(10) NOT NULL,\r\n"
+ " `asset_id` int(10) NOT NULL,\r\n"
+ " `configs` text NOT NULL,\r\n"
+ " `hash` varchar(64) NOT NULL COMMENT '计算 moduleId + assetId + host + port + configs 的hash值用于确保相同配置不重复',\r\n"
+ " `enabled` int(4) NOT NULL COMMENT '是否启用 可选值\\r\\n\\r\\n0停用\\r\\n\\r\\n1启用',\r\n"
+ " `seq` varchar(64) DEFAULT NULL,\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String monitorEndpointState = "CREATE TABLE `monitor_endpoint_state` (\r\n"
+ " `endpoint_id` int(10) NOT NULL,\r\n"
+ " `state` int(4) NOT NULL COMMENT ' ',\r\n"
+ " `time` datetime NOT NULL,\r\n"
+ " PRIMARY KEY (`endpoint_id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String monitorEventLog = "CREATE TABLE `monitor_event_log` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `event` varchar(64) NOT NULL COMMENT '唯一不重复\\r\\n\\r\\n包含值cmdprometheusrulesnmpblackbox',\r\n"
+ " `counter` int(10) NOT NULL COMMENT '描述信息update +1',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String monitorModule = "CREATE TABLE `monitor_module` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) DEFAULT NULL COMMENT '组件名称 唯一索引,表内不重复',\r\n"
+ " `project_id` int(10) NOT NULL,\r\n"
+ " `type` varchar(64) NOT NULL COMMENT '可选值http snmp',\r\n"
+ " `endpoint_name_tmpl` varchar(64) NOT NULL COMMENT 'endpoint name模板 支持 {{}} 变量替换assetmodule\\r\\n\\r\\n例{{asset.name}}-{{module.name}}\\r\\n\\r\\n最终endpoint的name为 192.168.40.1-mysql',\r\n"
+ " `remark` varchar(256) DEFAULT NULL,\r\n"
+ " `configs` text NOT NULL COMMENT '配置参数 ',\r\n"
+ " `snmp_yml` text DEFAULT NULL COMMENT 'snmp_exporter需要的配置部分',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0',\r\n"
+ " `seq` varchar(64) DEFAULT NULL,\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String monitorProject = "CREATE TABLE `monitor_project` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) DEFAULT NULL COMMENT '应用名称',\r\n"
+ " `remark` varchar(256) DEFAULT NULL COMMENT '描述信息',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置 1:内置0非内置默认0',\r\n"
+ " `seq` varchar(64) DEFAULT NULL,\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String snmpCredential = "CREATE TABLE `snmp_credential` (\r\n"
+ " `id` int(11) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '名称',\r\n"
+ " `remark` varchar(1024) DEFAULT NULL COMMENT '描述信息',\r\n"
+ " `type` int(1) NOT NULL COMMENT '1,2,3 -- > V1,V2,V3 创建人id',\r\n"
+ " `config` varchar(1024) DEFAULT NULL COMMENT '具体配置',\r\n"
+ " `port` int(1) NOT NULL DEFAULT 161 COMMENT '端口号 默认161',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String sysApiKey = "CREATE TABLE `sys_api_key` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '名称 唯一不重复',\r\n"
+ " `token` varchar(512) NOT NULL COMMENT '密钥 唯一不重复',\r\n"
+ " `role_id` int(10) NOT NULL COMMENT '角色id',\r\n"
+ " `create_by` int(10) NOT NULL COMMENT '创建用户',\r\n"
+ " `create_at` datetime NOT NULL COMMENT '创建时间',\r\n"
+ " `expire_at` datetime DEFAULT NULL COMMENT '失效时间 为空不失效',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String sysTimezone = "CREATE TABLE `sys_timezone` (\r\n"
+ " `id` int(4) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(255) NOT NULL COMMENT 'timezone id',\r\n"
+ " `offset` int(10) NOT NULL COMMENT '单位milliseconds',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String terminalCmd = "CREATE TABLE `terminal_cmd` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `uuid` varchar(256) NOT NULL COMMENT '会话id',\r\n"
+ " `cmd` varchar(4096) DEFAULT NULL COMMENT '用户输入命令',\r\n"
+ " `time` int(10) DEFAULT NULL COMMENT '单位ms\\r\\n\\r\\n记录的是 session开始后的时间偏移量',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String terminalRecord = "CREATE TABLE `terminal_record` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `uuid` varchar(256) NOT NULL COMMENT '会话ID',\r\n"
+ " `start_time` int(10) NOT NULL COMMENT '单位ms\\r\\n\\r\\nrecord 开始时间,记录的是会话开始后的时间偏移量',\r\n"
+ " `end_time` int(10) NOT NULL COMMENT '单位ms\\r\\n\\r\\nrecord 结束时间,记录的是会话开始后的时间偏移量',\r\n"
+ " `content` mediumblob NOT NULL COMMENT '记录的是 session开始后的时间偏移量\\r\\n\\r\\n最大储存 65K超过部分再新增一条记录',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String terminalSession = "CREATE TABLE `terminal_session` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `uuid` varchar(256) DEFAULT NULL COMMENT '会话id',\r\n"
+ " `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id',\r\n"
+ " `host` varchar(128) DEFAULT NULL COMMENT '登录主机',\r\n"
+ " `port` int(10) DEFAULT NULL COMMENT '端口',\r\n"
+ " `protocol` varchar(32) DEFAULT NULL COMMENT '协议可选值SSHTELNET。统一大写',\r\n"
+ " `auth_type` int(10) DEFAULT NULL COMMENT '认证类型1密码2私钥证书 认证类型1密码2私钥证书\\r\\n\\r\\nssh可选值1、2\\r\\n\\r\\ntelnet可选值1',\r\n"
+ " `login_user` varchar(128) DEFAULT NULL COMMENT '登录主机的用户名',\r\n"
+ " `user_id` int(10) NOT NULL COMMENT 'nezha系统内用户id',\r\n"
+ " `remote_addr` varchar(128) NOT NULL COMMENT '客户端ip地址',\r\n"
+ " `start_time` datetime NOT NULL COMMENT '开始时间',\r\n"
+ " `end_time` datetime DEFAULT NULL COMMENT '结束时间',\r\n"
+ " `status` int(1) NOT NULL COMMENT '0连接中\\r\\n\\r\\n1发送失败没有通过ssh或telnet发送成功\\r\\n\\r\\n2已结束\\r\\n\\r\\n3强制退出\\r\\n\\r\\n4未知错误',\r\n"
+ " `kill_user_id` int(10) DEFAULT NULL COMMENT '强制关闭用户id',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String visualChart = "CREATE TABLE `visual_chart` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `name` varchar(255) NOT NULL COMMENT '图表标题',\r\n"
+ " `panel_id` int(10) NOT NULL COMMENT '图表id关联panel表\\r\\n\\r\\n当 panel_id =0 代表为模板',\r\n"
+ " `group_id` int(10) NOT NULL COMMENT '关联 visual_chart.id关联 chart 的 type 只能为 group',\r\n"
+ " `span` int(10) NOT NULL COMMENT 'type = groupspan = 12, 用户修改无效',\r\n"
+ " `height` int(10) NOT NULL COMMENT 'type = groupheight = -1用户修改无效',\r\n"
+ " `update_by` int(10) NOT NULL COMMENT '更新人',\r\n"
+ " `update_at` datetime NOT NULL COMMENT '更新时间',\r\n"
+ " `type` varchar(32) NOT NULL COMMENT '图表类型 line\\r\\nbar\\r\\ntable\\r\\nstackArea\\r\\nsingleStat\\r\\nurl\\r\\nassetInfo\\r\\nalertList\\r\\ngroup',\r\n"
+ " `unit` int(10) NOT NULL DEFAULT 2 COMMENT '界面显示采用二级菜单',\r\n"
+ " `weight` int(10) NOT NULL DEFAULT 0 COMMENT '默认为 0用于chart排序',\r\n"
+ " `param` text DEFAULT NULL COMMENT '参数 记录type的具体参数信息数据格式为json对象\\r\\n\\r\\n当type = url时\\r\\n\\r\\n{\\r\\n\\r\\n “url”:\"https://www.baidu.com\"\\r\\n\\r\\n}',\r\n"
+ " `pid` int(10) DEFAULT NULL COMMENT '模板id 图表通过模板创建时不能为空,便于后续模板修改同步修改',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '1:内置0非内置默认0',\r\n"
+ " `remark` varchar(1024) NOT NULL DEFAULT '' COMMENT '默认:\"\"',\r\n"
+ " `seq` varchar(64) DEFAULT NULL COMMENT '导入唯一标识',\r\n"
+ " `var_type` int(1) DEFAULT NULL COMMENT '模板或使用模板创建有效pid != null | panel_id == 0 时不能为空\\r\\n\\r\\n1: asset\\r\\n\\r\\n2: endpoint',\r\n"
+ " `var_id` int(10) DEFAULT NULL COMMENT 'pid != null 时不能为空\\r\\n\\r\\n根据var_type 分别对应 asset.id, endpoint.id用于 表达式变量替换',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String visualChartElement = "CREATE TABLE `visual_chart_element` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `chart_id` int(10) NOT NULL COMMENT '图表id关联chart表',\r\n"
+ " `expression` varchar(4096) NOT NULL COMMENT 'promql表达式',\r\n"
+ " `type` varchar(32) NOT NULL COMMENT 'normal简单表达式可页面解析up{asset=\"192.168.40.40\",module=\"kafka\"}\\r\\n\\r\\nexpert用户输入表达式解析困难直接在页面显示',\r\n"
+ " `legend` varchar(512) DEFAULT NULL COMMENT '图例别名表达式',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置',\r\n"
+ " `seq` varchar(64) DEFAULT NULL COMMENT '导入唯一标识 用于导入撤销',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String visualPanel = "CREATE TABLE `visual_panel` (\r\n"
+ " `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '图表名',\r\n"
+ " `create_by` int(10) NOT NULL COMMENT '创建人id',\r\n"
+ " `type` varchar(64) NOT NULL DEFAULT 'dashboard' COMMENT '可选值dashboardassetprojectmoduleendpoint, model\\r\\n\\r\\n默认值dashboard',\r\n"
+ " `link` int(10) DEFAULT NULL COMMENT '关联id',\r\n"
+ " `pid` int(10) NOT NULL DEFAULT 0 COMMENT '父id 默认0',\r\n"
+ " `weight` int(10) NOT NULL DEFAULT 0 COMMENT '排序 默认0',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置',\r\n"
+ " `seq` varchar(64) NOT NULL DEFAULT '' COMMENT '默认:“”\\r\\n\\r\\n用于导入撤销',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String visualExpressionTmpl = "CREATE TABLE `visual_expression_tmpl` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT,\r\n"
+ " `name` varchar(64) NOT NULL COMMENT '模板名称',\r\n"
+ " `gname` varchar(64) NOT NULL DEFAULT 'default' COMMENT '组名默认default',\r\n"
+ " `expression` varchar(4096) NOT NULL COMMENT '表达式,不能为空',\r\n"
+ " `remark` varchar(512) NOT NULL COMMENT '描述',\r\n"
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '1:内置0非内置默认0',\r\n"
+ " `seq` varchar(64) NOT NULL DEFAULT '' COMMENT '用于导入撤销,默认:“”',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
String alertMessageActive = "CREATE TABLE `alert_message_active` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `severity` varchar(64) DEFAULT NULL COMMENT '告警级别',\r\n"
+ " `summary` text DEFAULT NULL COMMENT '告警摘要',\r\n"
+ " `description` text DEFAULT NULL COMMENT '告警描述',\r\n"
+ " `labels` text DEFAULT NULL COMMENT '告警labels信息',\r\n"
+ " `start_at` datetime DEFAULT NULL COMMENT '开始时间',\r\n"
+ " `end_at` datetime DEFAULT NULL COMMENT '结束时间',\r\n"
+ " `state` int(10) DEFAULT NULL COMMENT '状态1:pending,2:Expired',\r\n"
+ " `rule_id` int(10) NOT NULL COMMENT '告警规则ID',\r\n"
+ " `project_id` int(10) DEFAULT NULL COMMENT '关联project id',\r\n"
+ " `module_id` int(10) DEFAULT NULL COMMENT '关联module id',\r\n"
+ " `endpoint_id` int(10) DEFAULT NULL COMMENT '关联endpoint id',\r\n"
+ " `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id',\r\n"
+ " `dc_id` int(10) DEFAULT NULL COMMENT '关联idc id',\r\n"
+ " `hash_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'redis hash key',\r\n"
+ " `remark` text DEFAULT NULL COMMENT '备注 记录手动关闭记录信息,格式\\r\\n\\r\\ntime username\\r\\n\\r\\nmessage',\r\n"
+ " `severity_id` int(10) DEFAULT NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE,\r\n"
+ " KEY `idx_severity` (`severity`) USING BTREE,\r\n"
+ " KEY `idx_state` (`state`) USING BTREE,\r\n"
+ " KEY `idx_rule_id` (`rule_id`) USING BTREE,\r\n"
+ " KEY `idx_project_id` (`project_id`) USING BTREE,\r\n"
+ " KEY `idx_module_id` (`module_id`) USING BTREE,\r\n"
+ " KEY `idx_endpoint_id` (`endpoint_id`) USING BTREE,\r\n"
+ " KEY `idx_asset_id` (`asset_id`) USING BTREE,\r\n"
+ " KEY `idx_dc_id` (`dc_id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;";
String alertMessageHistory = "CREATE TABLE `alert_message_history` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `severity` varchar(64) DEFAULT NULL COMMENT '告警级别',\r\n"
+ " `summary` text DEFAULT NULL COMMENT '告警摘要',\r\n"
+ " `description` text DEFAULT NULL COMMENT '告警描述',\r\n"
+ " `labels` text DEFAULT NULL COMMENT '告警labels信息',\r\n"
+ " `start_at` datetime DEFAULT NULL COMMENT '开始时间',\r\n"
+ " `end_at` datetime DEFAULT NULL COMMENT '结束时间',\r\n"
+ " `state` int(10) DEFAULT NULL COMMENT '状态1:pending,2:Expired',\r\n"
+ " `rule_id` int(10) NOT NULL COMMENT '告警规则ID',\r\n"
+ " `project_id` int(10) DEFAULT NULL COMMENT '关联project id',\r\n"
+ " `module_id` int(10) DEFAULT NULL COMMENT '关联module id',\r\n"
+ " `endpoint_id` int(10) DEFAULT NULL COMMENT '关联endpoint id',\r\n"
+ " `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id',\r\n"
+ " `dc_id` int(10) DEFAULT NULL COMMENT '关联idc id',\r\n"
+ " `hash_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'redis hash key',\r\n"
+ " `remark` text DEFAULT NULL COMMENT '备注 记录手动关闭记录信息,格式\\r\\n\\r\\ntime username\\r\\n\\r\\nmessage',\r\n"
+ " `severity_id` int(10) DEFAULT NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE,\r\n"
+ " KEY `idx_severity` (`severity`) USING BTREE,\r\n"
+ " KEY `idx_state` (`state`) USING BTREE,\r\n"
+ " KEY `idx_rule_id` (`rule_id`) USING BTREE,\r\n"
+ " KEY `idx_project_id` (`project_id`) USING BTREE,\r\n"
+ " KEY `idx_module_id` (`module_id`) USING BTREE,\r\n"
+ " KEY `idx_endpoint_id` (`endpoint_id`) USING BTREE,\r\n"
+ " KEY `idx_asset_id` (`asset_id`) USING BTREE,\r\n"
+ " KEY `idx_dc_id` (`dc_id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;";
String alertMessageSilence = "CREATE TABLE `alert_message_silence` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `severity` varchar(64) DEFAULT NULL COMMENT '告警级别',\r\n"
+ " `summary` text DEFAULT NULL COMMENT '告警摘要',\r\n"
+ " `description` text DEFAULT NULL COMMENT '告警描述',\r\n"
+ " `labels` text DEFAULT NULL COMMENT '告警labels信息',\r\n"
+ " `start_at` datetime DEFAULT NULL COMMENT '开始时间',\r\n"
+ " `end_at` datetime DEFAULT NULL COMMENT '结束时间',\r\n"
+ " `state` int(10) DEFAULT NULL COMMENT '状态1:pending,2:Expired',\r\n"
+ " `rule_id` int(10) NOT NULL COMMENT '告警规则ID',\r\n"
+ " `project_id` int(10) DEFAULT NULL COMMENT '关联project id',\r\n"
+ " `module_id` int(10) DEFAULT NULL COMMENT '关联module id',\r\n"
+ " `endpoint_id` int(10) DEFAULT NULL COMMENT '关联endpoint id',\r\n"
+ " `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id',\r\n"
+ " `dc_id` int(10) DEFAULT NULL COMMENT '关联idc id',\r\n"
+ " `hash_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'redis hash key',\r\n"
+ " `remark` text DEFAULT NULL COMMENT '备注 记录手动关闭记录信息,格式\\r\\n\\r\\ntime username\\r\\n\\r\\nmessage',\r\n"
+ " `severity_id` int(10) DEFAULT NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF',\r\n"
+ " PRIMARY KEY (`id`) USING BTREE,\r\n"
+ " KEY `idx_severity` (`severity`) USING BTREE,\r\n"
+ " KEY `idx_state` (`state`) USING BTREE,\r\n"
+ " KEY `idx_rule_id` (`rule_id`) USING BTREE,\r\n"
+ " KEY `idx_project_id` (`project_id`) USING BTREE,\r\n"
+ " KEY `idx_module_id` (`module_id`) USING BTREE,\r\n"
+ " KEY `idx_endpoint_id` (`endpoint_id`) USING BTREE,\r\n"
+ " KEY `idx_asset_id` (`asset_id`) USING BTREE,\r\n"
+ " KEY `idx_dc_id` (`dc_id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;";
String alertSilenceMessageRel = "CREATE TABLE `alert_silence_message_rel` (\r\n"
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\r\n"
+ " `silence_conf_id` int(10) NOT NULL,\r\n"
+ " `message_id` bigint(20) NOT NULL,\r\n"
+ " `hash_key` varchar(255) NOT NULL,\r\n"
+ " PRIMARY KEY (`id`) USING BTREE\r\n"
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
StringBuilder sb = new StringBuilder();
sb.append(alertSilenceConf);
sb.append(alertSeverityConf);
sb.append(alertNotifyMethod);
sb.append(alertNotifyLog);
sb.append(assetAsset);
sb.append(assetBrand);
sb.append(assetFieldGroup);
sb.append(assetFieldMeta);
sb.append(assetFieldValue);
sb.append(assetModel);
sb.append(assetStateConf);
sb.append(assetTypeConf);
sb.append(dc);
sb.append(monitorEndpoint);
sb.append(monitorEndpointState);
sb.append(monitorEventLog);
sb.append(monitorModule);
sb.append(monitorProject);
sb.append(snmpCredential);
sb.append(sysApiKey);
sb.append(sysTimezone);
sb.append(terminalCmd);
sb.append(terminalRecord);
sb.append(terminalSession);
sb.append(visualChart);
sb.append(visualChartElement);
sb.append(visualPanel);
sb.append(visualExpressionTmpl);
sb.append(alertMessageHistory);
sb.append(alertMessageSilence);
sb.append(alertMessageActive);
sb.append(alertSilenceMessageRel);
sqlDao.execute(sb.toString());
}
/**
* alert_severity_conf
* asset_field_group
* asset_brand
* asset_model
* asset_state_conf
* asset_type_conf
* monitor_event_log
* sys_timezone
* @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', '<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?><license><product><maximumAssets>2000</maximumAssets><name>NEZHA</name><version>base</version></product><endDate>2021-06-03T14:52:43Z</endDate><signature><digestValue>3403d697d45c594a0d147d556d94ad087272830c</digestValue><signatureValue>35af0e65b3b6d6474db62359a42adf685413144e3ff57f3551f33c54614ed8eb4d705efd25ca873a73af08912242b74d3272cef149ac0b39ac4247e7263f9b395c1892aea7dce0d941ea14ee901f052192ce555c4c438510b31d6fef30b109125a42b19fbcf3190482adab2ffc64d01c31f3dd020a712fc97138c3c52df41f0116c56543faddba8a7393581dee612fec9646ca4edb6f46bf2894eeaff1436feb126ce7155dd8b5514038320b297fab40ca4ed0402eb71951e8b00185fe7fe7f0f0ba13de3d4dc9416a5762214bb8f2bfa7ec688bd119aeaa2a4c4153383b64a463892d63301070c295404538b54f8de7d36ca7fbf40011b9e057cbb1d4a15147</signatureValue></signature><contract>def@gz.com</contract><by>abc</by><genDate>2021-04-16T13:52:38Z</genDate><comment>test license</comment><tokens/><licenseId>111</licenseId><startDate>2021-03-03T14:52:43Z</startDate><customer>zhangsan</customer></license>', 1, '3403d697d45c594a0d147d556d94ad087272830c');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('license_token', 'abbbb', 1, NULL);\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('ldap_timeout', '30', 1, '超时时间秒');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('monitor_endpoint_export_header', '{\\\"cn\\\":{\\\"*系统\\\":\\\"系统名称(必填) \\\\n示例: Nezha\\\",\\\"*组件\\\":\\\"组件名称(必填) \\\\n示例: node_exporter\\\",\\\"名称\\\":\\\"实例名称 \\\\n示例: node_exporter\\\",\\\"资产名称\\\":\\\"资产名称(非必填) 与 主机地址 不能同时为空 \\\\n示例: A0420200101\\\",\\\"配置\\\":\\\"实例配置JSON格式 \\\\n示例: {\\\\\\\"key\\\\\\\":\\\\\\\"value\\\\\\\"}\\\",\\\"启用\\\":\\\"启用状态(非必填) 可选 0:停用 1:启用,为空时默认为1 \\\\n示例: 1\\\"},\\\"en\\\":{\\\"*Project Name\\\":\\\"Project Name(Required) \\\\nExample: Nezha\\\",\\\"*Module Name\\\":\\\"Module Name(Required) \\\\nExample: node_exporter\\\",\\\"Name\\\":\\\"Endpoint name \\\\nExample: node_exporter\\\",\\\"Asset Name\\\":\\\"Asset name(Not required) And host address cannot be empty at the same time \\\\n示例: A0420200101\\\",\\\"Configs\\\":\\\"Endpoint ConfigsJSON format \\\\nExample: {\\\\\\\"key\\\\\\\":\\\\\\\"value\\\\\\\"}\\\",\\\"Enabled\\\":\\\"Enable state (not required) Optional values 0: Disable 1: Enable, when empty, the default is 1 \\\\nExample: 1\\\"}}', 1, 'monitor endpoint 导入表头');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prometheus_federation_enabled', '1', 1, '配置prometheus是否开启联邦模式1开启0关闭界面禁用 添加选择 per-datacenter agent所有endpoint 配置信息 hash 分布到 global prometheus');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prom_cmd_tmpl', 'OPTION=\\\" --config.file=\\'/opt/nezha/nz-confagent/prometheus/prometheus.yml\\' --web.listen-address=\\'127.0.0.1:9090\\' --web.enable-admin-api --storage.tsdb.path=\\'/data/prometheusData\\' --web.enable-lifecycle --storage.tsdb.retention.time=${storageDays}d \\\"', 1, 'prometheus 启动参数模板');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prom_rule_tmpl', '{\\r\\n \\\"groups\\\": [{\\r\\n \\\"name\\\": \\\"alertRule\\\",\\r\\n \\\"rules\\\": [\\r\\n <#if endpointAlert>\\r\\n {\\r\\n \\\"alert\\\": \\\"0\\\",\\r\\n \\\"expr\\\": \\\"up{endpoint!=\\'\\'}>-1\\\",\\r\\n \\\"for\\\": \\\"30s\\\",\\r\\n \\\"annotations\\\": {\\r\\n \\\"summary\\\": \\\"{{$value}}\\\"\\r\\n }\\r\\n }, \\r\\n </#if>\\r\\n <#list ruleList as rule>\\r\\n {\\r\\n \\\"alert\\\": ${rule.id?c},\\r\\n \\\"expr\\\": \\\"(${rule.expr})${rule.operator}${rule.threshold}\\\",\\r\\n \\\"for\\\": \\\"${rule.last}s\\\",\\r\\n \\\"labels\\\": {\\r\\n \\\"severity\\\": \\\"${rule.severity_name}\\\",\\r\\n \\\"severity_id\\\": ${rule.severity_id?c}\\r\\n },\\r\\n \\\"annotations\\\": {\\r\\n \\\"summary\\\": <#if rule.summary?default(\\\"\\\")?trim?length gt 1>\\r\\n \\\"${rule.summary}\\\",\\r\\n <#else>\\\"\\\",</#if>\\r\\n \\\"description\\\": <#if rule.description?default(\\\"\\\")?trim?length gt 1>\\r\\n \\\"${rule.description}\\\"\\r\\n <#else>\\\"\\\"</#if>\\r\\n \\r\\n }\\r\\n }\\r\\n <#sep>,</#sep>\\r\\n </#list>]\\r\\n }]\\r\\n}', 1, 'prometheus rule文件模板');\r\n"
+ "INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prom_yml_tmpl', '{\\r\\n \\\"global\\\": {\\r\\n \\\"scrape_interval\\\": \\\"${scrape_interval}s\\\",\\r\\n \\\"scrape_timeout\\\": <#if scrape_timeout??> \\r\\n \\\"${scrape_timeout}s\\\",\\r\\n <#else>\\r\\n \\\"10s\\\",\\r\\n </#if>\\r\\n \\\"evaluation_interval\\\": \\\"${scrape_interval}s\\\"\\r\\n },\\r\\n \\r\\n <#-- alert 配置 -->\\r\\n <#if isAlert>\\r\\n \\\"alerting\\\": {\\r\\n \\\"alertmanagers\\\": [{\\r\\n \\\"path_prefix\\\": \\\"${path_prefix}\\\",\\r\\n \\\"static_configs\\\": [{\\r\\n \\\"targets\\\": [\\\"${alert_url}\\\"]\\r\\n }]\\r\\n }],\\r\\n \\\"alert_relabel_configs\\\": [{\\r\\n \\\"regex\\\": \\\"instance\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }, {\\r\\n \\\"regex\\\": \\\"replica\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }]\\r\\n },\\r\\n \\\"rule_files\\\": [\\\"rule.yml\\\"],\\r\\n </#if>\\r\\n \\r\\n \\r\\n \\r\\n <#-- per-datacenter 配置 -->\\r\\n <#if !isGlobal>\\r\\n \\\"scrape_configs\\\": [\\r\\n <#list endpointList as endpoint>\\r\\n {\\r\\n \\\"job_name\\\": ${endpoint.id?c},\\r\\n \\\"metrics_path\\\": <#if endpoint.config.metrics_path?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${endpoint.config.metrics_path}\\\",\\r\\n <#else>\\r\\n \\\"/metrics\\\",\\r\\n </#if>\\r\\n \\\"scrape_interval\\\": <#if endpoint.config.scrape_interval?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${endpoint.config.scrape_interval}s\\\",\\r\\n <#else>\\r\\n \\\"${scrape_interval}s\\\",\\r\\n </#if>\\r\\n \\\"scrape_timeout\\\": <#if endpoint.config.scrape_timeout?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${endpoint.config.scrape_timeout}s\\\",\\r\\n <#else>\\r\\n <#if scrape_timeout??> \\r\\n \\\"${scrape_timeout}s\\\",\\r\\n <#else>\\r\\n \\\"10s\\\",\\r\\n </#if>\\r\\n </#if>\\r\\n\\r\\n\\r\\n\\r\\n <#if endpoint.config.basic_auth??&& (endpoint.config.basic_auth?size >0)>\\r\\n <#if endpoint.config.basic_auth.username?default(\\\"\\\")?trim?length gt 0 && endpoint.config.basic_auth.password?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"basic_auth\\\":{\\r\\n \\\"username\\\": \\\"${endpoint.config.basic_auth.username}\\\",\\r\\n \\\"password\\\": \\\"${endpoint.config.basic_auth.password}\\\"\\r\\n },\\r\\n </#if>\\r\\n </#if>\\r\\n \\r\\n \\r\\n <#if endpoint.config.bearer_token??&&endpoint.config.bearer_token?trim?length gt 0>\\r\\n \\\"authorization\\\":{\\r\\n \\\"type\\\":\\\"Bearer\\\",\\r\\n \\\"credentials\\\":\\\"${endpoint.config.bearer_token}\\\"\\r\\n },\\r\\n </#if>\\r\\n\\r\\n \\r\\n <#-- params 不为空且类型为 http ,添加 params -->\\r\\n <#if endpoint.config.params??&& (endpoint.config.params?size >0) && endpoint.module.type == \\\"http\\\">\\r\\n \\\"params\\\":{\\r\\n <#list endpoint.config.params?keys as itemKey>\\r\\n \\\"${itemKey}\\\":[\\r\\n <#list endpoint.config.params[itemKey] as pojo>\\r\\n \\\"${pojo}\\\"\\r\\n <#sep>,</#sep>\\r\\n </#list>\\r\\n ]\\r\\n <#sep>,</#sep>\\r\\n </#list>\\r\\n },\\r\\n <#elseif endpoint.module.type == \\\"snmp\\\">\\r\\n <#-- 类型是 snmp ,组织 param 数据 原来params弃用因为 snmp_exporter 不支持其他参数 -->\\r\\n \\\"params\\\":{\\r\\n \\\"target\\\":[ \\\"${endpoint.config.host}:${endpoint.config.port?c}\\\" ],\\r\\n \\\"module\\\":[ \\\"${endpoint.module.name}\\\" ]\\r\\n },\\r\\n </#if>\\r\\n \\r\\n \\\"static_configs\\\": [{\\r\\n \\\"targets\\\": [<#if endpoint.module.type == \\\"http\\\">\\r\\n \\\"${endpoint.config.host}:${endpoint.config.port?c}\\\"\\r\\n <#else>\\r\\n \\\"127.0.0.1:9116\\\"\\r\\n </#if>\\r\\n ],\\r\\n \\\"labels\\\": {\\r\\n \\\"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 </#if>\\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>,</#sep>\\r\\n </#if>\\r\\n </#list>\\r\\n </#if>\\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>,</#sep>\\r\\n </#list>\\r\\n \\r\\n <#-- ping 配置 -->\\r\\n \\r\\n <#if endpointList??&&(endpointList?size>0)>\\r\\n ,\\r\\n </#if>\\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 </#if>\\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 </#if>\\r\\n </#if>\\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>,</#sep>\\r\\n </#list>\\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 </#if>\\r\\n <#else>\\r\\n <#-- 联邦关闭,抓取所有指标即可 -->\\r\\n \\\"{__name__=~\\\\\\\".+\\\\\\\",nz_agent_id != \\\\\\\"${jobPojo.excludeAgentId}\\\\\\\"}\\\"\\r\\n </#if>\\r\\n ]\\r\\n },\\r\\n \\\"authorization\\\":{\\r\\n \\\"type\\\":\\\"Bearer\\\",\\r\\n \\\"credentials\\\":\\\"${jobPojo.token}\\\"\\r\\n },\\r\\n </#if>\\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 </#if>\\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>,</#sep>\\r\\n </#list>\\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>\\\"\\\"</#if><#sep>,</#sep>\\r\\n </#list>\\r\\n } \\r\\n </#if>\\r\\n }<#sep>,</#sep>\\r\\n </#list>\\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 </#if>\\r\\n ],\\r\\n \\\"metric_relabel_configs\\\": [\\r\\n {\\r\\n \\\"regex\\\": \\\"instance\\\",\\r\\n \\\"action\\\": \\\"labeldrop\\\"\\r\\n }\\r\\n ]\\r\\n }<#sep>,</#sep>\\r\\n </#list>\\r\\n \\r\\n <#-- ping 配置 -->\\r\\n \\r\\n <#if jobList??&&(jobList?size>0)>\\r\\n ,\\r\\n </#if>\\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 </#if>\\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 </#if>\\r\\n </#if>\\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>,</#sep>\\r\\n </#list>\\r\\n \\r\\n \\r\\n <#if ( jobList??&&(jobList?size>0)) || assetList??&&(assetList?size>0)>\\r\\n ,\\r\\n </#if>\\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 </#if>\\r\\n \\\"scrape_interval\\\": <#if endpoint.config.scrape_interval?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${endpoint.config.scrape_interval}s\\\",\\r\\n <#else>\\r\\n \\\"${scrape_interval}s\\\",\\r\\n </#if>\\r\\n \\\"scrape_timeout\\\": <#if endpoint.config.scrape_timeout?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"${endpoint.config.scrape_timeout}s\\\",\\r\\n <#else>\\r\\n <#if scrape_timeout??> \\r\\n \\\"${scrape_timeout}s\\\",\\r\\n <#else>\\r\\n \\\"10s\\\",\\r\\n </#if>\\r\\n </#if>\\r\\n\\r\\n\\r\\n\\r\\n <#if endpoint.config.basic_auth??&& (endpoint.config.basic_auth?size >0)>\\r\\n <#if endpoint.config.basic_auth.username?default(\\\"\\\")?trim?length gt 0 && endpoint.config.basic_auth.password?default(\\\"\\\")?trim?length gt 0>\\r\\n \\\"basic_auth\\\":{\\r\\n \\\"username\\\": \\\"${endpoint.config.basic_auth.username}\\\",\\r\\n \\\"password\\\": \\\"${endpoint.config.basic_auth.password}\\\"\\r\\n },\\r\\n </#if>\\r\\n </#if>\\r\\n \\r\\n \\r\\n <#if endpoint.config.bearer_token??&&endpoint.config.bearer_token?trim?length gt 0>\\r\\n \\\"authorization\\\":{\\r\\n \\\"type\\\":\\\"Bearer\\\",\\r\\n \\\"credentials\\\":\\\"${endpoint.config.bearer_token}\\\"\\r\\n },\\r\\n </#if>\\r\\n\\r\\n \\r\\n <#-- params 不为空且类型为 http ,添加 params -->\\r\\n <#if endpoint.config.params??&& (endpoint.config.params?size >0) && endpoint.module.type == \\\"http\\\">\\r\\n \\\"params\\\":{\\r\\n <#list endpoint.config.params?keys as itemKey>\\r\\n \\\"${itemKey}\\\":[\\r\\n <#list endpoint.config.params[itemKey] as pojo>\\r\\n \\\"${pojo}\\\"\\r\\n <#sep>,</#sep>\\r\\n </#list>\\r\\n ]\\r\\n <#sep>,</#sep>\\r\\n </#list>\\r\\n },\\r\\n <#elseif endpoint.module.type == \\\"snmp\\\">\\r\\n <#-- 类型是 snmp ,组织 param 数据 原来params弃用因为 snmp_exporter 不支持其他参数 -->\\r\\n \\\"params\\\":{\\r\\n \\\"target\\\":[ \\\"${endpoint.config.host}:${endpoint.config.port?c}\\\" ],\\r\\n \\\"module\\\":[ \\\"${endpoint.module.name}\\\" ]\\r\\n },\\r\\n </#if>\\r\\n \\r\\n \\\"static_configs\\\": [{\\r\\n \\\"targets\\\": [<#if endpoint.module.type == \\\"http\\\">\\r\\n \\\"${endpoint.config.host}:${endpoint.config.port?c}\\\"\\r\\n <#else>\\r\\n \\\"127.0.0.1:9116\\\"\\r\\n </#if>\\r\\n ],\\r\\n \\\"labels\\\": {\\r\\n \\\"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 </#if>\\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>,</#sep>\\r\\n </#if>\\r\\n </#list>\\r\\n </#if>\\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>,</#sep>\\r\\n </#list>\\r\\n \\r\\n ]\\r\\n </#if>\\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<SysUserEntity> users = sysUserService.queryNewUsers();
List<SysUserEntity> oldUsers = sysUserService.queryOldUsers();
Map<Long, SysUserEntity> userIdAndEntity = users.stream().collect(Collectors.toMap(SysUserEntity::getId, Function.identity()));
for(SysUserEntity user : oldUsers) {
SysUserEntity sysUserEntity = userIdAndEntity.get(user.getUserId());
if(ToolUtil.isNotEmpty(sysUserEntity)) {
sb.append("update sys_user set id='"+user.getUserId()+"',username='"+user.getUsername()+"',pin='"
+user.getPassword()+"',salt='"+user.getSalt()+"',email='"+user.getEmail()+"',status='"
+user.getStatus()+"',lang='"+user.getLang()
+"',source='"+user.getSource()+"',name='"+user.getUsername()+"';");
}else {
sb.append("insert into sys_user (id,username,pin,salt,email,status,"
+ "lang,source,name) values('"+user.getUserId()+"','"+user.getUsername()+"','"+user.getPassword()
+"','"+user.getSalt()+"','"+user.getEmail()+"','"+user.getStatus()
+"','"+user.getLang()+"','"+user.getSource()+"','"+user.getUsername()+"');");
}
}
//
sqlDao.execute(sb.toString());
// sys_config表数据
List<SysConfigEntity> newDatas = sysConfigService.list();
List<SysConfigEntity> oldDatas = sysConfigService.querySysConfigEntitys();
Map<String, String> oldDataMap = oldDatas.stream().collect(Collectors.toMap(SysConfigEntity::getParamKey, SysConfigEntity::getParamValue));
for(SysConfigEntity data : newDatas) {
if(data.getParamKey().equals("default_scrape_interval")) {
data.setParamValue(oldDataMap.get("scrape_interval"));
}else if(data.getParamKey().equals("default_scrape_timeout")) {
data.setParamValue(oldDataMap.get("scrape_timeout"));
}else if(data.getParamKey().equals("timezone")) {
data.setParamValue("Asia/Shanghai");
}else if(data.getParamKey().endsWith("confagent_path") || data.getParamKey().equals("system_version")){
continue;
}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());
}
}